Javascript 如何按$(“className”)引用对象?
我试图在网页上获取属于某个类的对象数组 这是我第一次使用JQuery和JS进行实验,请理解 我想返回属于类Javascript 如何按$(“className”)引用对象?,javascript,jquery,html,Javascript,Jquery,Html,我试图在网页上获取属于某个类的对象数组 这是我第一次使用JQuery和JS进行实验,请理解 我想返回属于类dataRow odd的所有项的数组 目前我正在尝试$('.dataRow odd')和$('.dataRow.odd'),如图所示和所示 对于一些外部类,这个方法似乎有效,我可以得到元素。一旦我进入一个更深的(更缩进的),它就不会了 这是我试图访问的表的html: <div class="listRelatedObject caseBlock"> <div cla
dataRow odd
的所有项的数组
目前我正在尝试$('.dataRow odd')
和$('.dataRow.odd')
,如图所示和所示
对于一些外部类,这个方法似乎有效,我可以得到元素。一旦我进入一个更深的(更缩进的),它就不会了
这是我试图访问的表的html:
<div class="listRelatedObject caseBlock">
<div class="bPageBlock brandSecondaryBrd secondaryPalette">
<form action="/p/case/CaseMassAction?retURL=%2F500%3Fisdtp%3Dlt%26fcf%3D00BE0000003Suuk&ent=Case&from=&isdtp=lt" id="actionForm" method="POST" name="actionForm" onsubmit="return verifyChecked(actionForm, 'ids', 'Please select at least one row')" target="mainFrame">
<input type="hidden" name="isdtp" id="isdtp" value="mn">
<input type="hidden" name="retURL" id="retURL" value="/500?isdtp=lt&fcf=00BE0000003Suuk">
<div class="pbHeader">
<div class="listHeader">...</div>
</div>
<div class="pbBody">
<table class="list" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr class="headerRow">...</tr>
<!-- ListRow -->
<tr class="dataRow even first bRowHilight" id="row_500E000000B8LgY" onblur="if (window.hiOff){hiOff(this);}" onfocus="if (window.hiOn){hiOn(this);}" onmouseout="if (window.hiOff){hiOff(this);}" onmouseover="if (window.hiOn){hiOn(this);}">...</tr>
<!-- ListRow -->
<tr class="dataRow odd" id="row_500E000000B77FP" onblur="if (window.hiOff){hiOff(this);}" onfocus="if (window.hiOn){hiOn(this);}" onmouseout="if (window.hiOff){hiOff(this);}" onmouseover="if (window.hiOn){hiOn(this);}">...</tr>
<!-- ListRow -->
<tr class="dataRow even" id="row_500E000000B8NHk" onblur="if (window.hiOff){hiOff(this);}" onfocus="if (window.hiOn){hiOn(this);}" onmouseout="if (window.hiOff){hiOff(this);}" onmouseover="if (window.hiOn){hiOn(this);}">...</tr>
<!-- ListRow -->
<tr class="dataRow odd last" id="row_500E000000B7TIG" onblur="if (window.hiOff){hiOff(this);}" onfocus="if (window.hiOn){hiOn(this);}" onmouseout="if (window.hiOff){hiOff(this);}" onmouseover="if (window.hiOn){hiOn(this);}">...</tr>
</tbody>
</table>
</div>
</form>
</div>
我得到了元素:
<div class="bodyDiv brdPalette brandPrimaryBrd">...</div>
我想一切都正常,除了那个
$('.dataRow.odd').length+$('.dataRow.偶数').length
将不起作用(因为$('dataRow.odd')返回null)
感谢到目前为止的回复。对不起,如果我的答案以前不清楚的话——对这个问题还是很陌生的
谢谢
我想返回属于类dataRow odd
的所有项的数组
请注意,由于类是一个以空格分隔的令牌列表,dataRow-odd
实际上是两个类,一个是dataRow
,另一个是odd
将这些知识与CSS选择器结合起来,您将认识到使用这两个类选择单个元素的最简单方法是使用
.dataRow.odd
哪个匹配
<span class="dataRow odd"></span>
<span class="odd dataRow"></span>
<span class="foo odd bar dataRow baz"></span>
试试这个。创建一个数组(示例中的元素)。循环使用类名遍历每个元素并推送到元素数组
var elements = [];
$('.dataRow.odd').each(function(){
elements.push($(this));
}):
示例代码中缺少$('.dataRow-odd')上的“.”。
此外,还讨论了选择子元素和多类元素之间的区别
孩子
$('.dataRow.odd');(此处包括空格)
多类
$('.dataRow.odd'); (no space)
<div class="dataRow odd">
</div>
$('.dataRow.odd');(没有空间)
你是指类dataRow和odd吗?元素是什么样子的,你确定你不仅仅是在寻找$('.dataRow.odd')
在vanilla js中,使用document.querySelectorAll(“.dataRow.odd”)
或document.getElementsByClassName(“dataRow odd”)
。在jQuery中,使用$('.dataRow.odd')
$('.dataRow.odd')
应该执行您想要的操作。你能详细说明一下吗:“对于某些父类,这个方法似乎有效,我可以得到元素。一旦我进入一个祖先,它就不起作用。”@CookieMonester-应该是document.getElementsByClassName(“dataRow odd”)
。这是正确的语法GetElementsByCassName
只有一个参数。然而,问题是OP已经尝试了$('.dataRow.odd')
,在这句话之后,它说一旦我进入一个祖先,它就不起作用了。
Hi@PaulS.,我已经尝试了这两种方法,但当我在控制台中键入它们时,我仍然得到了“null”。是否有理由我必须使用内部节点而不是document.querySelectorAll(“dataRow-odd”)?我将此标记为答案,尽管它对我不起作用,因为它应该与我提供的信息一起工作。问题在于该类是在iframe内部引用的。为了让$('.className')正常工作,我必须对网页进行jquery,然后使用$(“#iframeID”)获取iframe,使用.contents()方法获取iframe中的内容,然后查找(“.dataRow”)以获取我要查找的元素。谢谢大家的回答。抱歉,我没有提供足够的详细信息,我只是不确定在哪里添加信息,或者iframe是个问题。嗨@DonaldPowell。非常感谢你的回答。但是我仍然有困难,我想不是因为函数不工作,而是因为它没有返回属于类的任何对象。您认为$('dataRow.odd')找不到我的元素是有原因的吗?上面的注释显示了$('dataRow.odd')。我相信您想要美元('.dataRow.odd')。您需要在任何类名之前加一个句点(“.”),在id名称之前加一个哈希/磅(#”)。试试$('.dataRow.odd')。谢谢@DonaldPowell,但还是没有运气:/
var array = Array.prototype.slice.call(nodeList);
var elements = [];
$('.dataRow.odd').each(function(){
elements.push($(this));
}):
$('.dataRow .odd'); (space include here)
<div class="dataRow">
<div class="odd"></div>
</div>
$('.dataRow.odd'); (no space)
<div class="dataRow odd">
</div>