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