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

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

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

这样可行。<div>我现在想在祖先具有无价值属性“nopopup”时阻止 .hover() 的操作,就像<div>上面的 b 一样。即使 $selector 选择了它们,“nopopup”也会阻止 c 和 d 的任何悬停。悬停候选和阻碍 nopopup 之间的级别数各不相同。

我需要类似的东西:

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

那些括号里的内容是什么?或者这是错误的方法?

4

2 回答 2

2

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

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

或者

$($selector).not('.nopopup '+$selector).hover(....
于 2012-11-04T03:33:10.300 回答
0

ID 不能重复使用,请注意更改。

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

工作 jsFiddle 演示

于 2012-11-04T03:31:45.570 回答