Jquery 每个只在第一个元素上工作
我很难理解jQuery。每个。 我有以下代码:Jquery 每个只在第一个元素上工作,jquery,html,loops,indexing,each,Jquery,Html,Loops,Indexing,Each,我很难理解jQuery。每个。 我有以下代码: $('#testDiv').each(function(index, domEle){ $(this).text(index); }); 和下面的HTML <div id="p18"> <div class="inner"> <span>...</span> <p class="right">...</p>
$('#testDiv').each(function(index, domEle){
$(this).text(index);
});
和下面的HTML
<div id="p18">
<div class="inner">
<span>...</span>
<p class="right">...</p>
<div id="testDiv"></div>
</div>
</div>
<div id="p19">
<div class="inner">
<span>...</span>
<p class="right">...</p>
<div id="testDiv"></div>
</div>
</div>
<div id="p20">
<div class="inner">
<span>...</span>
<p class="right">...</p>
<div id="testDiv"></div>
</div>
</div>
...
...
...
当脚本运行时,它只对第一个testDiv有效,因为它正确地将文本设置为0,而对其他testDiv无效
我的总体目标是编写一个脚本,根据另一个div的高度设置div的高度。高度不同,所以我认为循环结构是一种可行的方法(除非我弄错了?)
我对jq代码做了哪些错误处理?这不是每个
方法的问题。您为多个元素指定了相同的id
,这是不受支持的
改用类,您可以找到所有元素
演示:您不能对不同的元素使用相同的#id
。尝试重命名其余的,你会得到你想要的结果
或者这样做(无需添加任何类即可工作-更干净的代码)
id
选择器最多返回一个元素
您不应拥有多个具有相同id的元素。这是一个无效的HTML
这将起作用,但您应该改为修复HTML:
$('div[id="testDiv"]')...
你真正应该做的是:
<div id="p18">
<div class="inner">
<span>...</span>
<p class="right">...</p>
<div class="testDiv"></div>
</div>
</div>
<div id="p19">
<div class="inner">
<span>...</span>
<p class="right">...</p>
<div class="testDiv"></div>
</div>
</div>
您的html无效。ID必须是唯一的。您应该将id=“testDiv”
更改为class=“testDiv”
HTML:
<div id="p20">
<div class="inner">
<span>...</span>
<p class="right">...</p>
<div class="testDiv"></div>
</div>
</div>
$('.testDiv').each(function(index, domEle){
$(this).text(index);
});
不能在html页面中指定相同的div id
<div id="testDiv"></div>
})) ID在整个页面中应该是唯一的,您观察到的行为是完全正常的。您的HTML无效:)重复ID修复具有相同ID的多个元素的问题,然后尝试使用$。每个在一个类上,例如$('.inner')。每个(函数…
facepalm不能相信我忘记了xD谢谢:)@Skye。请不要使用我的属性选择器解决方法。它仍然是一个无效的HTML。不用担心。testdiv是用jq添加的,所以这是一个快速修复方法,我没有为我选择的任何元素设置id。在我的例子中,将domEle添加到我的函数中就成功了。谢谢
$('.testDiv').each(function(index, domEle){
$(this).text(index);
});
<div id="testDiv"></div>
<div class="testDiv"></div>
$('.testDiv').each(function(index, domEle){
$(this).text(index);