内部列表的委托处理程序?

时间:2010-08-31 13:12:22

标签: jquery

我有以下内容:

<ul id='foo'>
  <li>
    <ul class='a'>
      <li class='animal'>goat</li>
      <li class='animal'>horse</li>
      <li class='animal'>pig</li>
    </ul>
  </li>
  <li>
    <ul class='a'>
      <li class='animal'>zebra</li>
    </ul>
  </li>
</ul>

我想为内部li项(具有类'animal'的项目)创建一个委托处理程序:

$('#foo li ul').delegate('li', 'click', function(event) {
    ...
});

我不确定如何在委托定义中定义选择器 - 这是正确的方法吗?

由于

2 个答案:

答案 0 :(得分:2)

你可以这样做:

$('#foo').delegate('li.animal', 'click', function(event) {
  //do something
});

初始选择器是点击的监听器应该存在的地方(它们会冒泡到这里),第一个参数(li.animal)是要监听点击的元素。

答案 1 :(得分:0)

以下内容应该有效......

$('#foo').delegate('ul.a li', 'click', function(event) {
    ...
});

这也可以,但是会将处理程序附加到每个ul.a元素,这会失去.delegate IMO的好处:)

$('#foo ul.a').delegate('li', 'click', function(event) {
    ...
});