javascript - 如何检测点击的元素是否不是 jQuery 元素的子元素?

标签 javascript php jquery html wordpress

我在 WordPress 中有一个嵌套列表,单击它时,它会相应地过滤产品。

代码是这样的:

<ul class="woof_list woof_list_radio">

  <li class="woof_term_224">
    <label class="woof_radio_label " for="woof_unselect">Parent Category 1</label>

    <ul class="woof_childs_list woof_childs_list_224">
      <li class="woof_childs_list_li">
        <label class="woof_radio_label">Sub Category 1</label>
      </li>
    </ul>
  </li>

  <br>

  <li class="woof_term_225">
    <label class="woof_radio_label " for="woof_unselect">>Parent Category 2</label>

    <ul class="woof_childs_list woof_childs_list_225">
      <li class="woof_childs_list_li">
        <label class="woof_radio_label">Sub Category 2</label>
      </li>
    </ul>
  </li>

  <br>

  <li class="woof_term_226">
    <label class="woof_radio_label " for="woof_unselect">>Parent Category 3</label>

    <ul class="woof_childs_list woof_childs_list_226">
      <li class="woof_childs_list_li">
        <label class="woof_radio_label">Sub Category 3</label>
      </li>
    </ul>

  </li>

</ul>

• 父类别 1
o 子类别 1
• 父类别 2
o 子类别 2
• 家长类别 3
o 子类别 3

我有点击元素的选择器。

j(document).on('click', '.woof_list_radio .woof_radio_label', function(e) {

});

如果我单击子类别 1 <label> <li class="woof_term_224"> 的子元素然后我点击父类别 2 <label>元素,你知道我如何检测是否点击了 <label>不是 <li class="woof_term_224"> 的 child 或者检测到它是在其父项之外单击的?

最佳答案

您可以检查最接近类 woof_term_224 的长度来确定。您可以通过将选择器更改为尝试以下方式:

$(document).on('click', '.woof_list_radio > [class^=woof_term_]', function(e) {

代码示例:

$(document).on('click', '.woof_list_radio > [class^=woof_term_]', function(e) {
  let len = $(this).closest('.woof_term_224').length;
  if(len)
    console.log('The child');
  else
    console.log('Not the child');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="woof_list woof_list_radio">

  <li class="woof_term_224">
    <label class="woof_radio_label " for="woof_unselect">Parent Category 1</label>

    <ul class="woof_childs_list woof_childs_list_224">
      <li class="woof_childs_list_li">
        <label class="woof_radio_label">Sub Category 1</label>
      </li>
    </ul>
  </li>

  <br>

  <li class="woof_term_225">
    <label class="woof_radio_label " for="woof_unselect">>Parent Category 2</label>

    <ul class="woof_childs_list woof_childs_list_225">
      <li class="woof_childs_list_li">
        <label class="woof_radio_label">Sub Category 2</label>
      </li>
    </ul>
  </li>

  <br>

  <li class="woof_term_226">
    <label class="woof_radio_label " for="woof_unselect">>Parent Category 3</label>

    <ul class="woof_childs_list woof_childs_list_226">
      <li class="woof_childs_list_li">
        <label class="woof_radio_label">Sub Category 3</label>
      </li>
    </ul>

  </li>

</ul>

可以通过以下方式找到被点击元素的父类:

$(document).on('click', '.woof_list_radio > [class^=woof_term_]', function(e) {
  let parentClass = $(this).closest('[class^=woof_term_').prop('class');
  console.log('Element is the child of class',parentClass);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="woof_list woof_list_radio">

  <li class="woof_term_224">
    <label class="woof_radio_label " for="woof_unselect">Parent Category 1</label>

    <ul class="woof_childs_list woof_childs_list_224">
      <li class="woof_childs_list_li">
        <label class="woof_radio_label">Sub Category 1</label>
      </li>
    </ul>
  </li>

  <br>

  <li class="woof_term_225">
    <label class="woof_radio_label " for="woof_unselect">>Parent Category 2</label>

    <ul class="woof_childs_list woof_childs_list_225">
      <li class="woof_childs_list_li">
        <label class="woof_radio_label">Sub Category 2</label>
      </li>
    </ul>
  </li>

  <br>

  <li class="woof_term_226">
    <label class="woof_radio_label " for="woof_unselect">>Parent Category 3</label>

    <ul class="woof_childs_list woof_childs_list_226">
      <li class="woof_childs_list_li">
        <label class="woof_radio_label">Sub Category 3</label>
      </li>
    </ul>

  </li>

</ul>

关于javascript - 如何检测点击的元素是否不是 jQuery 元素的子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51796519/

相关文章:

javascript - 无需重新加载即可更改地址栏中的 URL

javascript - Ajax 仅适用于提交的第一个 id(使用来自数据库的 php)

javascript - 不透明度似乎仅在其值为 1 时起作用

javascript - 函数运行多次的结果是否会被缓存?

javascript - eval(fn) 和 eval(arrowFn) 返回不同的值

php - 登录 php 和 mysqli

php - 当jquery ajax数据包含在php mysql查询中时如何正确显示jquery ajax数据

javascript - 页面 : only the first one works 上有多个上传按钮

javascript - 将 Canvas 元素反射到远程 Canvas 元素

javascript - 如何打开新克隆的 Bootstrap 选择字段?