1

hover() ショートカット用の非常に単純なハンドラーのセットを作成したいのですが、失敗し続けます。最終的には mouseenter/mouseleave を使用しましたが、将来のためにここにある問題を確認したいと思います。

$function(){
     $('div.profile').find('li:gt(0)').each(function(){
           this.hover(highlight,offlight);
});
});

var highlight=function(){
   $(this).css("background","blue");
}

var offlight=function(){
   $(this).css("background","none");
}

わかりましたので、これはおそらくエラーだらけです。まず、「this」関数コンテキストが 2 番目の 2 つの関数定義で機能するかどうかはわかりません。これは、ready ハンドラーの外部で実際に定義されていないためです。うまくいかない場合は、強調表示される「li」が同じものであることを確認するために、ここで他に何かできることはありますか? ハイライトとオフライトの匿名関数を作成する必要がありますか、それとも別の方法がありますか?

2) 何をしてもホバー イベント ハンドラが失敗するようです。ここでは、 each 関数を正しく使用していると思います。何が与えるかわかりません。

4

2 に答える 2

3

.hover()DOM 要素を呼び出しています。代わりに jQuery オブジェクトで呼び出します。

//-----v------was missing the "("
      $(function() {
           $('div.profile').find('li:gt(0)').hover(highlight,offlight);
      });
// attach .hover() to all the <li> found-------^

ご覧のとおり、.each().


全体として、単純な背景の変更だけを行っている場合は、CSS:hover疑似セレクターを使用します。

  $(function() {
       $('div.profile').find('li:gt(0)').addClass( "hoverMe" );
  });

CSS

li.hoverMe {
    background:none;
}
li.hoverMe:hover {
    background:blue;
}

ただし、マークアップを微調整しないと機能しませんIE6

于 2011-02-21T20:33:02.847 に答える
2

あなたのeach関数でthisは、jQuery オブジェクトを参照していません。あなたはそれをラップする必要があります$()

$(this).hover(highlight,offlight);
于 2011-02-21T20:32:45.223 に答える