0
$(".hovertip").parent().live('hover', function() {
  ...

上記のコードは登録されていないようです。

これも機能していないようです:

$(".hovertip").parent().live({
  mouseenter:
    function() {
    ...

.live、.delegate、.bind、または.onでjQueryセレクターと.parent()セレクターを.hover()またはmouseenter:およびmouseleave:で操作する例はありますか?


更新:この質問で発生した動的DOMの問題に対処するために、別の質問を作成しました: .parent()と動的セレクターを使用したjQuery .on()

4

4 に答える 4

4

試す:

$(".hovertip").parent().on('hover', function() {
    alert('yay');
});

注: .on jQuery1.8で導入されました。

作業デモ http://jsfiddle.net/pRB8n/ テストテストにカーソルを合わせる-デモ内

本当に使用したい場合は、.delegateこれを試してください:http: //jsfiddle.net/TURBX/2/-http : //api.jquery.com/delegate/

委任
ルート要素の特定のセットに基づいて、現在または将来、セレクターに一致するすべての要素の1つ以上のイベントにハンドラーをアタッチします。

残りがニーズに合うことを願っています:)

PS-.live非推奨です:さらに熱心な場合は-私の古い投稿はここにあります::) jQueryライブメソッドの何が問題になっていますか?

カテゴリの下に次のように表示されます:http://api.jquery.com/live/ "deprecated"

于 2012-10-17T00:17:08.903 に答える
1

実際、あなたが探しているのは、これらの線に沿ったものだと思います。

$(document).on('mouseover', '.hovertip', function() {
  // handle your mouseover changes, here
});

$(document).on('mouseout', '.hovertip', function() {
  // handle your mouseout changes, here
});

.live、.bindはすべて非推奨であり、AFAIKです。これは、将来的に廃止されることを意味し、継続的なサポートに依存したくない場合があります。

また、.hovertip要素に近いが、DOMネストでそれらの上にあるセレクターに置き換えることもはるかに良いでしょう$(document)。そうすれば、イベントに応答できますが、jQueryに全体のすべての要素のすべてのイベントを監視させる必要はありません。資料。構造の残りの部分がどのように見えるかわからないので、例としてそこにドキュメントを入れます。

http://jsfiddle.net/mori57/qa7py/

私が考えているように、.parent()に物を投げると、特にDOMを変更している場合は、必ずしも期待どおりに機能するとは限らないことを指摘する価値があると思います。より高いレベルのイベントハンドラーを設定する方がはるかに安全だと思います。

.parent()のようなものを使用する必要がある場合は、.closest()を使用すると常により正確な結果が見つかります。セレクターを指定すると、解析エンジンが検索を絞り込むのにも役立ちます。片方の親が/all/ .hovertipsのホバー状態を一度にトリガーすることは望ましくありません。これは、場合によっては発生する可能性があります。

于 2012-10-17T00:21:21.100 に答える
1

Tats_innitの投稿にコメントを追加しますが、できません。

ライブのドキュメントによると、

連鎖方法はサポートされていません。たとえば、$( "a")。find( "。offsite、.external")。live(...); は無効であり、期待どおりに機能しません。

そのため、.parent()は機能しません。

于 2012-10-17T00:22:27.937 に答える
1

親へのバインド

イベントの委任(非推奨のliveandによって処理され.delegate、現在は.on/によって処理され.oneます)は下に移動するだけです。ここでやりたいと思われるような上向きのイベント委任を行うことはできません。

つまり、の親が".hovertip"存在しない場合は明らかに存在".hovertip"しないため、実際には何にもバインドされていません。

イベントが表示されたときの親にイベントをバインドすることが目標である場合".hovertip"、委任は下向き(子孫)にのみ移動するため、SOLになります。

これを処理するためのオプションは次のとおりです。* .hovertipDOMに追加されたときの親にバインドします。*事前に親のセレクターを知っており.hovertip、おそらく委任を通じて、すぐにそれにバインドします。

子供に委任する

.hovertipがホバーされたときにイベントを発生させることが目標であるが.hovertip、DOMに存在せず、その親が不明な場合は、次のような方法を使用する必要があります。

$("known parent selector of .hovertip").on('hover', '.hovertip', function () {

「.hovertipの既知の親セレクター」は、事前に知っている要素である必要があります。わからない場合は、を使用する必要がありますがdocument、できるだけ近づけるようにしてください。これは、バインド時にDOMに存在する要素でのみ使用できます。

于 2012-10-17T00:24:35.243 に答える