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

jQuery .hover() を使用して、特定<div>の s がマウスオーバーされたときにメニューをポップアップします。<div>文字列 $selector は、どのs がホバーを取得するかを識別します。

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

それはうまくいきます。上記の b のように、祖先<div>に値のない属性「nopopup」がある場合、.hover() の操作を阻止したいと考えています。<div>その「nopopup」は、$selector がそれらを選択したとしても、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 に答える