获取特定类的每个UL元素的ID

时间:2010-11-04 21:31:49

标签: javascript jquery html prototypejs

目标:从名为SBUpdater的ul类中获取特定HTML元素ul的id值

目的:我的程序包含多个服务器URL,并从每个服务器URL解析我需要的特定信息。 ul的每个id包含服务器url的值。我需要获取此ID值,以便我可以更新该特定的ul标记并更新屏幕上的内容(无需刷新页面)。

在php文件中,我有以下内容: 示例代码:

<ul id="http://server1.com" class="SBUPdater">
   <li> ... </li>
</ul> 

<ul id="http://server2.com" class="SBUPdater">
   <li> ... </li>
</ul>

我只需要一种从ul标签中获取此id值的方法。 已知:

  • Tag = ul
  • Class = SBUpdater
  • ID =?

我想要的是检索每个ul的id值,获取所有ul id,使用它们执行函数,然后每10秒重复一次该过程。

7 个答案:

答案 0 :(得分:2)

您可以使用.map(),但您的ID无效,如下所示:

var idArray = $(".SBUPdater").map(function() { return this.id; }).get();

我会使用数据属性,如下所示:

<ul data-url="http://server1.com" class="SBUPdater">

这样的剧本:

var urlArray = $(".SBUPdater").map(function() { return $(this).attr("data-url"); }).get();

或者,如果您使用的是jQuery 1.4.3 +

var urlArray = $(".SBUPdater").map(function() { return $(this).data("url"); }).get();

答案 1 :(得分:1)

使用原型库,您可以这样做:

$$('.SBUPdater').each(function(){
    new Ajax.PeriodicalUpdater(this, this.getAttribute('data-url'), {
        frequency: 10 // every 10 seconds
    });
});

每个ul元素都会使用data-url(非id)属性来保存服务器脚本的URL。然后该脚本将返回相应ul元素的新内容。

感谢Nick Craver的出色建议

答案 2 :(得分:0)

在jQuery中,这很简单:

var ids = $('.SBUPdater').map(function(el) {
  return el.id;
});

console.log(ids); // ids contains an array of ids

要每隔10秒钟对这些ID执行一些操作setInterval

window.setInterval(function() {
  $.each(ids, function(id) {
    console.log(id);
  });
}, 10 * 1000);

答案 3 :(得分:0)

$('ul.SBUPdater').each(function(){
    alert(this.id);
});

答案 4 :(得分:0)

嗯,也许是这样的:

var urls = new Array();
var count = 0;
$('.SBUPdater').each(function() {
  urls[count] = $('.SBUpdater').attr('id');
  count++;
}
for(var i = 0; i < count; i++) {
  //do something with urls[i];
}

它甚至可以在each函数内部。

答案 5 :(得分:0)

setInterval( function(){
  $('ul.SBUPdater').each(function(){
    // use this.id
    console.log(this.id);
  })
}, 10000 );

这应该这样做..

答案 6 :(得分:0)

编辑:

function GetULs() {
 var ULs = document.getElementsByTagName("UL");
 var IDs = new Array();
 for(var i = 0; i < ULs.length; i++) {
  if(ULs[i].className == "SBUPdater") {
   IDs.push(ULs[i].id);
  }
 }
 return IDs;
}

此函数将返回您要查找的所有元素ID的数组。然后,您可以将该数组用于您需要的任何内容。