jQuery Click功能对第一个孩子不起作用

时间:2014-04-23 21:51:17

标签: javascript jquery click

jQuery点击功能并不适用于李的第一个孩子,而是#con;' .contracted'如同jsFiddle

<ul class="clearfix">
  <li class="contracted">
    <a href="#">
      <span>L1<b>: Recognize a digit represents 10 times the value</b></span>
    </a>
  </li>
  <li class="">
    <a href="#">
      <span>L2<b>: Recognize a digit represents 10 times the value</b></span>
    </a>
  </li>
</ul>

我也尝试在底部移动点击功能。但它不起作用。完整的工作示例在jsFiddle中给出。

$('.contracted').click(function () {
  $(this).parent().attr('class', 'expanded');
  $('ul.expanded li.activeLesson').attr('class', 'selected');
  $('ul.expanded li:not(.selected)').attr('class', '');
});

1 个答案:

答案 0 :(得分:3)

您的$('.contracted').click(...)代码会在代码运行时将点击处理程序绑定到具有该类的任何元素 - 这不会自动适用于稍后添加该类的其他元素。如果您希望它在单击时具有contracted类的任何li元素上工作,请使用通过.on()设置的委托事件处理程序:

$('ul').on('click', 'li.contracted', function() {
   ...
});

这会将click处理程序绑定到所有ul元素,但是当发生单击时,jQuery会检查所单击的项是否是ul的后代,它与第二个参数中的选择器匹配,并且只调用你的功能,如果它。