使用包含自定义点击事件的链接附加li

时间:2012-06-27 16:00:14

标签: jquery

我正在尝试将li元素附加到列表中,其中包含具有自定义点击事件的链接...我正在尝试类似:

<div id="myid"><ul></ul></div>

$('#myid ul').append("<li><a href=''>Link</a></li>").click(function(){alert('hi')})

但点击事件位于 li ,而不是 a href 。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:9)

实际上,click事件处理程序绑定到ul元素。

  

我该如何解决这个问题?

将其绑定到a元素:

$("<li><a href=''>Link</a></li>").find('a').click(function(event) {
    event.preventDefault(); // <-- if you don't want the browser follow the link
    alert('hi');
}).end().appendTo('#myid ul');

DEMO

单独创建链接可能更清晰:

$('<a />', {
    text: "Link",
    href: "",
    click: function() {/*...*/}
}).wrap('<li />').parent().appendTo('#myid ul');

有关所用方法的信息,请参阅jQuery API documentation

答案 1 :(得分:1)

您可以使用.on,因为您的li正在动态添加

 $('#myid ul').append('<li id="li1"><a href=''>Link</a></li>');

    $('body').on('click','#li1',function(){
         alert('hi');
    });

答案 2 :(得分:1)

$('#myid ul').append("<li><a href=''>Link</a></li>");

$("a").live("click", function() { // or use on(...)
    alert('hi');
});

在追加后,将实时点击绑定到a元素。 Jsfiddle:http://jsfiddle.net/reygonzales/Z5pSC/

答案 3 :(得分:0)

$('#myid ul').append("<li><a href=''>Link</a></li>")
     .find("a:last").click(function(){
         alert('hi')
})​​​​;