目标:从名为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值的方法。 已知:
我想要的是检索每个ul的id值,获取所有ul id,使用它们执行函数,然后每10秒重复一次该过程。
答案 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的数组。然后,您可以将该数组用于您需要的任何内容。