2

我正在尝试将 li 元素附加到具有自定义单击事件的链接的列表中......我正在尝试类似的东西:

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

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

但是点击事件是在li而不是a href上。我该如何解决?

4

4 回答 4

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');

演示

不过,单独创建链接可能会更干净:

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

有关所用方法的信息可以在jQuery API 文档中找到。

于 2012-06-27T16:03:55.660 回答
1

您可以使用.on,因为您的 li 是即时附加的

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

    $('body').on('click','#li1',function(){
         alert('hi');
    });
于 2012-06-27T16:03:46.727 回答
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/

于 2012-06-27T16:04:00.813 回答
0
$('#myid ul').append("<li><a href=''>Link</a></li>")
     .find("a:last").click(function(){
         alert('hi')
})​​​​;
于 2012-06-27T16:05:09.077 回答