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”处理程序?如果我在他的按钮单击处理程序中执行此操作,那么它将多次附加“on”处理程序,对,每次单击按钮时?我也无法在页面加载时定义“on”处理程序,因为那时 mylist 不可见。

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

如果要严格访问最后添加的元素,可以通过多种方式遍历它:

您可以转到 $("ul#mylist li:last-child") 或 $("ul#mylist li:nth-child(n)") 或编辑它们,在附加之前添加它们一个类,以便您可以标记它们视觉上作为最后的添加。

于 2013-03-02T20:37:02.293 回答