Javascript 什么';排除嵌套子代的jquery选择器是什么?
,它已经求助于jquery来解决这个问题,但如果我想清楚的话,它可能会回到YUI中,我需要一个选择器来排除后代 提出的解决方案是这样的:Javascript 什么';排除嵌套子代的jquery选择器是什么?,javascript,jquery,jquery-selectors,yui,Javascript,Jquery,Jquery Selectors,Yui,,它已经求助于jquery来解决这个问题,但如果我想清楚的话,它可能会回到YUI中,我需要一个选择器来排除后代 提出的解决方案是这样的: $( '.revealer:not(.revealer > .revealer)' ); 为了更准确地适应我的情况,因为我有多个HTML块要执行相同的测试,所以我将其更新为: $( '#_revealerEl_0 .handle:not(#_revealerEl_0 .reveal .handle)' ); HTML在其上选择(图像页面上有许多相同区
$( '.revealer:not(.revealer > .revealer)' );
为了更准确地适应我的情况,因为我有多个HTML块要执行相同的测试,所以我将其更新为:
$( '#_revealerEl_0 .handle:not(#_revealerEl_0 .reveal .handle)' );
HTML在其上选择(图像页面上有许多相同区块的副本,每个副本都需要单独处理-为每个“revealer”分配一个id属性):
内容A
内容B
子内容A
子内容B
简而言之:我需要针对每个revealer的“热点”中的“顶级”句柄,并且没有具有相同类名的嵌套子代
谢谢,
d
编辑:
同样重要的是,我不要开始依赖子体属性,如parentNode、childNode[x]、nextSibling等。。。因为目前这个模块非常灵活,它的“显示”和“句柄”元素可以驻留在其他标记中,并且仍然是目标-只要它们在“热点”中找到。我不知道哪个是你的
#u revealerEl\u 0
元素,但是如果它是你的顶级.revealer
,你就不能这样做吗
$('#_revealerEl_0 > .hotspot > .handle')
或者,如果顶级.revealer
本身是#u revealerEl_0
的后代,则此操作有效:
$('#_revealerEl_0 > .revealer > .hotspot > .handle')
这里的基本前提是链接多个
子组合符。尝试以下方法:
obj = $('.revealer[id*="revealerEl"]');
//this will give you what you are after
result = $("> .hotspot > .handle",obj)
//if you want to see them in red
$("> .hotspot > .handle",obj).css('color','red');
//or assign a click to it
$("> .hotspot > .handle",obj).click(function(){
//blah ....
})
这对我使用jQuery是有效的:
$('.revealer:first > .hotspot > .reveal')
给定第一个展示者,找到任何属于直接子对象的热点,并在其中找到任何直接展示项目
因此,要为“句柄”分配句柄,请执行以下操作:
$('.handle').click(function(){
$(this).closest('.hotspot > .reveal').show();
});
上述情况转化为:
- 对于任何给定的句柄,为元素指定一个单击事件函数
- 单击句柄时,查找其最近的父热点
- 从热点中,查找作为热点直接子级的任何显示元素
- 如果这些元素是用display:none隐藏的,则显示这些元素
$('.handle').click(function(){
$(this).closest('.hotspot > .reveal').show();
});