Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择所有子项,使用jQuery标记的组中的子项除外_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

Javascript 选择所有子项,使用jQuery标记的组中的子项除外

Javascript 选择所有子项,使用jQuery标记的组中的子项除外,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我有一个类似这样的列表结构(请注意带有.browser类的两个列表,其中一个带有data click=“yes”) 和许多其他变体,但没有成功。对我来说,使用结构并将事件附加到正文中也很重要,因为我正在动态地更改结构 我在这里发现了这个问题的许多变体,但是没有一个是完全相同的,它们对我不起作用。我感觉到我在某种程度上误解了:not选择器,但是我仍然不能正确理解它。如果我理解得很好,您希望在ul.browser[数据单击='yes']中处理单击a元素的操作,但不在内部中。browser元素: $(

我有一个类似这样的列表结构(请注意带有.browser类的两个列表,其中一个带有data click=“yes”)

和许多其他变体,但没有成功。对我来说,使用结构并将事件附加到正文中也很重要,因为我正在动态地更改结构


我在这里发现了这个问题的许多变体,但是没有一个是完全相同的,它们对我不起作用。我感觉到我在某种程度上误解了:not选择器,但是我仍然不能正确理解它。

如果我理解得很好,您希望在
ul.browser[数据单击='yes']
中处理单击
a
元素的操作,但不在内部
中。browser
元素:

$("body").on("click", "ul.browser[data-click='yes'] a:not(.browser .browser *)", function (event) {
  // do something
});

这不是最佳方式,但应该可以:

$('ul.browser').each(function()
{
   if($(this).data('click') === 'yes')
   {
       $(this).on('click', function(e)
       {
            //Stuff
       });   
   } 
});

我知道您只想将点击事件附加到
的“第一”级,这是数据点击设置为“是”的“浏览器”的子级,您只需选择直接子级即可轻松完成:

$("body").on("click", "ul.browser[data-click='yes'] > li > a", function (event) {
    // Do something
});

据我所知,您希望为
    中具有类
    的所有
    标记启用单击事件功能。使用属性
    data的浏览器
    单击=“yes”
    ,并希望排除内部
      标记下具有类
      的所有其他
      标记

      $(document).ready(function(){
      
        $("body").on("click", "ul.browser[data-click='yes']  li a:not(.browser .browser *)",function(){
          alert("hi");
        });
      
      });
      

      上面的代码解释了=>为所有
      标签添加单击功能,这些标签位于
    • 标签中,其父级为
      标签具有类
      .browser
      和属性
      数据单击=/yes'
      ,不要为任何具有层次结构的标签添加单击事件。browser.browser

      谢谢,就是这样。我必须更深入地了解:not operator谢谢你的回答,我正在考虑这个选项,但是我希望规则也能在更深层次上起作用。这也能在更深层次上起作用,而且更为优化,选择直接子节点会使节点选择更为优化。
      $("body").on("click", "ul.browser[data-click='yes'] > li > a", function (event) {
          // Do something
      });
      
      $(document).ready(function(){
      
        $("body").on("click", "ul.browser[data-click='yes']  li a:not(.browser .browser *)",function(){
          alert("hi");
        });
      
      });