1

ul に追加されたばかりの一連の li への参照を取得するにはどうすればよいですか?

リストがあるとします:

<ul id="mylist">
  <li>1</li>
  <li>2</li>
</ul>

今、上記の ul にさらにいくつかの li を追加しているので、次のようになります。

$('mylist').append(response);

応答は次のようになります。

"<li>3</li>
 <li>4</li>
 <li>5</li>"

新しく追加された li にクリック ハンドラーをアタッチしたいのですが、それらの li の参照を取得するにはどうすればよいですか?

更新: ul#mylist はポップアップ内にあり、最初は表示されません。別のボタンをクリックすると、このポップアップが表示されます。

$mybtn.click(function(){
  $('#mylist').show();
});

では、「on」ハンドラをどこに定義すればよいでしょうか。ボタンクリックハンドラー内でそれを行うと、ボタンがクリックされるたびに「オン」ハンドラーが複数回アタッチされますか? mylist が表示されないため、ページの読み込み時に "on" ハンドラーを定義することもできません。

4

3 に答える 3

4

追加する前に要素を作成します。

var els = $(response).appendTo('#mylist')
                     .on("click", function() { /* your code */ });

または、ハンドラー専用の場合は、にデリゲートハンドラーを設定するだけで、ul心配する必要はありません。

// on page load
$('#mylist').on("click", "li", function() { /* your code */ });

// on response
$('#mylist').append(response);
于 2013-03-02T20:21:06.663 に答える
2

試す

$('#mylist').on('click', 'li', function() { console.log('whatever'); });
于 2013-03-02T20:24:08.290 に答える
0

If you want to access strictly last added elements, you can traverse it in multiple ways:

You can go $("ul#mylist li:last-child"), or $("ul#mylist li:nth-child(n)") or edit them, adding them a class before appending, so you can mark them visually as last addition.

于 2013-03-02T20:37:02.293 に答える