合并.not()和parents()

时间:2012-11-04 03:24:13

标签: jquery

<div id="a">
  <div id="b" nopopup>
    <div id="c"> 
      <div id="d">

我使用jQuery .hover()在特定<div>被鼠标悬停时弹出菜单。字符串$ selector标识哪个<div>悬停。

$($selector).hover( 
  // popup the menu
)

有效。我现在想要在祖先<div>具有无值属性“nopopup”时阻止.hover()的操作,如上面<div> b所做的那样。即使$选择器选择它们,“nopopup”也会阻止c和d的任何悬停。悬停候选人和挫败的nopopup之间的等级数量各不相同。

我需要类似的东西:

$($selector).not( one of the selected node's parents has the attribute "nopopup" ).hover( 
  // popup the menu
)

这些括号中有什么内容?或者这是错误的做法?

2 个答案:

答案 0 :(得分:2)

可以使用多种方法。以下假设nopopup是一个类,因为html无效

$($selector).hover( 
  if( !$(this).closest('.nopopup').length){
       /* run code when nopop isn't ancestor*/
   }
)

OR

$($selector).not('.nopopup '+$selector).hover(....

答案 1 :(得分:0)

ID无法重复使用,请注意更改。

​$('.d').not('div[nopopup] .d').hover(function(){
    //logic 
});​​​​​​​​​​​​​​​​​​

Working jsFiddle demo