0

jQuery には、$(document).on(...)たとえば ajax リクエストの後など、html に新しく追加された要素にもイベントを割り当てるために使用する機能があります。

hoverpulseなどのカスタム定義関数/プラグインでこれを使用する例を教えてください。

私が直面している他の問題は、セレクターで呼び出すときに hoverpulse によって返されるその関数にいくつかの値が渡されることも期待していることです。

  $(document).ready(function(){  
    $('div.thumb img').hoverpulse({ size: 40, speed: 400 });   
  });

jQueryのon()メソッドを介してそのような関数のオプションを渡す方法は? オプションはハンドラーに渡されるのではなく、関数hoverpulse自体に渡されることに注意してください。

4

2 に答える 2

2

この.on()メソッドはイベント ハンドラーを割り当てるために使用されます。これを使用してプラグインを適用することを考えても意味がありません。

「$(selector).hoverpulse() を使用すると、同じ関数が再割り当てされます...そのため、場合によっては効果が 2 回実行されますか?」

はい、同じセレクターを使用すると、その時点でセレクターに一致するすべての要素にプラグインが適用されます。これには、以前に既に行われた要素も含まれます。あまり重要でないプラグインもありますが、そうでないプラグインもあります。具体的にはよくわかりませんが、同じ要素に対して複数回.hoverpulse()呼び出した場合、同じ要素に対して効果が複数回実行される可能性があります.hoverpulse()

頭に浮かぶ最初の回避策は、既にプラグインが適用されている要素にクラスを追加し、次回はそのクラスを持たない要素に制限することです。

$('div.thumb img').not(".HPapplied")
                  .hoverpulse({ size: 40, speed: 400 })
                  .addClass("HPapplied"‌​);

(おそらく) ドキュメント準備完了と Ajax 成功コールバックの両方で同じオプションを適用する必要がある場合、上記のステートメントを関数に入れ、その関数を両方の場所から呼び出すことができます。そうすれば、オプションの 1 つを変更する必要がある場合でも、1 か所で変更するだけで済みます。

于 2012-11-09T06:33:51.580 に答える
1

やあ、画像を動的に追加するときは、このような onload イベントがあるようにしてください...

<div style="position: relative;" class="thumb"><img onload="$(this).hoverpulse();"style="position: absolute; top: 0px; left: 0px;" src="hoverpulse_files/beach1.jpg" height="64" width="64"></div>

コードに他の変更を加えなくても問題なく動作します...

于 2012-11-09T06:36:26.600 に答える