6

我无法理解 jquery .each。我有以下代码:

$('#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 代码时做错了什么?

4

5 回答 5

18

你不能#id对不同的元素使用相同的。尝试重命名其余的,你会得到你想要的结果

或者这样做(无需添加任何类即可工作 - 更简洁的代码)

$('.inner div').each(function(index, domEle){    
    $(this).text(index);
});
于 2012-06-08T12:50:51.743 回答
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')...
于 2012-06-08T12:51:13.120 回答
3

这不是each方法的问题。您为几个元素指定了相同id的值,这是不受支持的。

改用一个类,你可以找到所有的元素。

演示:http: //jsfiddle.net/Guffa/xaL4n/

于 2012-06-08T12:50:39.153 回答
1

您的 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>

Javascript

$('.testDiv').each(function(index, domEle){    
    $(this).text(index);
});
于 2012-06-08T12:52:23.933 回答
1

您不能在 html 页面中指定相同的 div id。

<div id="testDiv"></div>

相反,尝试

<div class="testDiv"></div>

你的功能应该看起来像

$('.testDiv').each(function(index, domEle){    
$(this).text(index);

});

于 2012-06-08T12:52:24.340 回答