-1

this supposed to be easy task, but in fact i spent hour to solve this matter, i googled and found no solution yet, basically i would like to iterate dom element (div with IDs), here's my code:

$j(document).ready(function(){
    $j("#pinlocation").each(function(index){
        alert(index+":"+$j(this).text());
    });

});

on the content:

   <div id="pinlocation">Test1</div>
   <div id="pinlocation">Test2</div>

i replicate the error here: http://www.doxadigital.com/scrape/dummy.php

as you see, this script fails to get second "pinlocation". Any idea what did i go wrong ?

Thanks a lot

4

5 回答 5

3

ID 应该是唯一标识符。要么将其更改为一个类,要么给它们不同的 ID。

于 2012-11-21T17:47:03.263 回答
3

这里的问题很简单,你不能有两个相同id的元素,第二个将被忽略。

您可以尝试将您的更改id="pinlocation"class="pinlocation"然后执行以下操作:

$j(document).ready(function(){
    $j(".pinlocation").each(function(index){
        alert(index+":"+$j(this).text());
    });
});

现在应该可以正常工作了。

于 2012-11-21T17:48:32.847 回答
1

您的 html 无效,因为您对多个元素使用了相同的 id。这就是为什么您的代码没有为第二个 id 迭代的原因。

http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2

而是对元素使用类。

于 2012-11-21T17:55:07.427 回答
1

这是一个非常简单的解决方案,将您的 id 更改为一个类。

$j(document).ready(function(){
    $j(".pinlocation").each(function(index){
        alert(index+":"+$j(this).text());
    });

});
<div class="pinlocation">Test1</div>

注意。所有 ID 都应该是唯一的。

于 2012-11-21T17:53:21.630 回答
1

对于两个不应该如此的控件,您有相同的 id。你可以塑造你的选择器来迭代但是this is bad practice and must not be used unless you have no other option. Its better to put some class in both and using class selector.

改变

$j("#pinlocation")

$j("[id=pinlocation]")

你的代码

$j(document).ready(function(){
    $j("[id=pinlocation]").each(function(index){
        alert(index+":"+$j(this).text());
    });    
});

使用类选择器(推荐)

  <div id="pinlocation1" class="someclass">Test1</div>
  <div id="pinlocation2" class="someclass">Test2</div>


$j(document).ready(function(){
    $j(".someclass").each(function(index){
        alert(index+":"+$j(this).text());
    });
});
于 2012-11-21T17:46:45.440 回答