2010-03-18 67 views
1

我有一个无序的链接列表,这些链接是由Ajax动态创建的,并且我想为每个链接添加点击功能,但它不起作用,请帮忙!如何在jquery中访问动态创建的列表?

这里是我的代码:

HTML

<div id="sidebar"> 
    <li> 
     <h2> list </h2> 
     <ul id="list"></ul> 
    </li> 
</div> 

JS

//to create links 
var str = ''; 
$.each(json.opts, function(i, opt) { 
    var id = opt + '-list'; 
    str += '<li><a href="#" id='+ id +'>' + opt + '</a></li>'; //link 
} 
$("#list").html(str); 

... 
//to add click function to each links, this won't work 
$("#list li").each(function (i) { 
    alert(i + " : " + $(this).text()); 
}); 
+0

您知道您的HTML无效吗? 'li'元素必须被'ul'或'ol'包围。 – 2010-03-18 00:22:09

回答

1

应该是.click()而不是.each()

$("#list li").click(function (i) { 
    alert(i + " : " + $(this).text()); 
}); 

如果调用此函数时,元素必须已经插入。否则你必须使用.live()

$("#list li").live('click', function (i) { 
    alert(i + " : " + $(this).text()); 
}); 
+0

谢谢,.live()做到了! – Ohana 2010-03-18 00:38:19

0

也许你需要.live()

德cription:为现在或将来与当前选择器匹配的所有元素附加事件处理程序。

0

我一直在为这一整天而战!

.live()是我所需要的。

我已经动态创建了没有响应的幻灯片编号链接.click()