2

カスタムクリックイベントを持つリンクを含むリストにli要素を追加しようとしています...次のようなことを試みています:

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

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

ただし、クリック イベントはa hrefではなくliにあります。これを修正するにはどうすればよいですか?

4

4 に答える 4

9

実際には、クリック イベント ハンドラーは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 に答える