我无法理解jqueries。每个。 我有以下代码:
$('#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,而不是其他testDivs。
我的总体目标是编写一个脚本,根据另一个div的高度设置div的高度。高度不同所以我认为循环结构是要走的路(除非我弄错了?)
我对jq代码做错了什么?
答案 0 :(得分:17)
您不能对不同的元素使用相同的#id
。尝试重命名其余的,你会得到你想要的结果
或者这样做(无需添加任何类别 - 清洁代码)
$('.inner div').each(function(index, domEle){
$(this).text(index);
});
答案 1 :(得分:6)
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>
然后按类别选择:
$('.testDiv')...
答案 2 :(得分:3)
答案 3 :(得分:1)
你的html无效。 Ids需要独一无二。您应该将id="testDiv"
更改为class="testDiv"
<强> HTML 强>:
<div id="p20">
<div class="inner">
<span>...</span>
<p class="right">...</p>
<div class="testDiv"></div>
</div>
</div>
<强>的Javascript 强>:
$('.testDiv').each(function(index, domEle){
$(this).text(index);
});
答案 4 :(得分:1)
您不能在html页面中指定相同的div id。
<div id="testDiv"></div>
保证,尝试
<div class="testDiv"></div>
,你的功能应该是
$('.testDiv').each(function(index, domEle){
$(this).text(index);
});