dom - 使用 JQuery event.target 与 child 一起工作

标签 dom jquery

我的问题特指http://api.jquery.com/event.target/#example-1

如果您在 <li> 中使用跨度或其他标签来更改样式,例如 <b>正如我所做的那样here ,该元素的该部分不会触发 JQuery 函数来切换其子元素。如何才能完成这项工作?

HTML:

<ul>
    <li><b>This doesn't work,</b> this does
    <ul>
      <li>sub item 1-a</li>
      <li>sub item 1-b</li>
    </ul>
  </li>
  <li>item 2
    <ul>
      <li>sub item 2-a</li>
      <li>sub item 2-b</li>
    </ul>
  </li>
</ul>

JavaScript:

function handler(event) {
  var $target = $(event.target);
  if( $target.is("li") ) {
    $target.children("ul").toggle();
  }
}
$("ul").click(handler).find("ul").hide();

最佳答案

要继续使用当前的表单,我建议使用 closest():

function handler(event) {
    $(event.target).closest('li').children("ul").toggle();
}
$("ul").click(handler).find("ul").hide();

JS Fiddle demo .

虽然我自己使用,但我更喜欢:

$('li').on('click', function(e){
    e.stopPropagation();
    $(this).find('ul').toggle();
});

JS Fiddle demo .

引用文献:

关于dom - 使用 JQuery event.target 与 child 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17756811/

相关文章:

javascript - 为什么 JQuery 和 Javascript DOM 方法会去除空格?

javascript - Fine Uploader 在 onComplete 回调中引用新创建的 DOM 对象

javascript - 如何在自动删除特定 HTML 元素时触发事件?

Javascript/Jquery 搜索字符串中是否存在单词

javascript - 从 dom 到 jquery 的函数

jquery 在输入文本区域中选择输入按钮

jQuery 检查元素是否具有内联定义的特定样式属性

javascript - Dragula - 将元素从一个容器拖到不同的元素

javascript - 即使发现错误,Ajax 仍在执行

javascript - 如何从另一个函数接收异步函数响应?使用 promise 。