Javascript 如何在动态创建的列表中查找字符串
加载页面后,我进行数据库调用(通过ajax/php)以获得动态列表。列表显示良好,如下所示:Javascript 如何在动态创建的列表中查找字符串,javascript,jquery,load,Javascript,Jquery,Load,加载页面后,我进行数据库调用(通过ajax/php)以获得动态列表。列表显示良好,如下所示: <ul id="menu"> <li><a href="#page-bla">bla</a></li> <li><a href="#page-bla2">bla2</a></li> <li><a href="#page-bla3">bla3</a></li
<ul id="menu">
<li><a href="#page-bla">bla</a></li>
<li><a href="#page-bla2">bla2</a></li>
<li><a href="#page-bla3">bla3</a></li>
</ul>
问题(我假设)是#menu加载速度不够快,因此在#menu加载之前会触发on load事件,我在body上尝试过,但也没有成功。本质上,我只需要一段时间来查看动态生成的列表,然后它所在的页面就被完全加载了
有什么想法吗?
<body onload="findList()">
那么您的
函数findList(){
var list=document.getElementById(“菜单”).getElementsByTagName(“li”);
var contains=“bla3”;
var patt=新的RegExp(包含“g”);
对于(var x=0;x0){
var hrefVal=list[x].childNodes[0].href;
警报(hrefVal);
}
}
}
首先,您似乎需要一种方法来等待菜单。您可以尝试轮询元素的DOM
这是一把粗糙的小提琴,它似乎模拟了你所描述的:
var menuHasArrived=函数(fn){
log('checking…');
如果($('#菜单')。长度){
fn();
}否则{
setTimeout(函数(){
menuHasArrived(fn);
}, 1000);
}
}
menuHasArrived(函数(){
警报($('#菜单li a:contains(bla2')).attr('href');
});
setTimeout(函数(){
$('body')。追加(
“
”);
}, 2000);
祝你好运你有任何警觉吗?删除
?
$(“#菜单li a[href$=”?bla3“])。attr('href')
应该是$(“#菜单li a[href$=”bla3“])。attr('href')
实际上是什么?是一个打字错误,但不,我一点也没有得到警告。我将事件从load切换到hover,并将其瞄准了li,效果很好,因此pageID是正确的,load事件不起作用。您需要在问题中添加更多详细信息,您正在使用哪个插件等。。。试着摆好小提琴。加载事件是您正在使用的菜单插件提供的事件吗?我正在使用jquery,就是这样。on方法是jquery的一部分,加载事件是.on的属性。一把小提琴不能反映内容的动态特性(或者至少我不知道如何制作一把小提琴)。啊,好的。我不认为有加载事件的元素。据我所知,你们已经加载了文档或正文,但并没有加载元素。
<body onload="findList()">
<head>
<script type="text/javascript" language="javascript">
function findList() {
var list = document.getElementById("menu").getElementsByTagName("li");
var contains = "bla3";
var patt = new RegExp(contains,"g");
for (var x=0;x<list.length;x++) {
if (list[x].match(patt).length>0) {
var hrefVal = list[x].childNodes[0].href;
alert(hrefVal);
}
}
}
</script>
</head>
var menuHasArrived = function (fn) {
console.log('checking...');
if ($('#menu').length) {
fn();
} else {
setTimeout(function () {
menuHasArrived(fn);
}, 1000);
}
}
menuHasArrived(function () {
alert($('#menu li a:contains(bla2)').attr('href'));
});
setTimeout(function () {
$('body').append(
'<ul id="menu">' +
'<li><a href="#page-bla">bla</a></li>' +
'<li><a href="#page-bla2">bla2</a></li>' +
'<li><a href="#page-bla3">bla3</a></li>' +
'</ul>');
}, 2000);