私は束縛して生きることには慣れていますが、委任することには慣れていません...
動的に生成されたタグ要素へのイベントのバインドのサポートはライブとデリゲートの可能性がありますが、新しいバージョンではライブはサポートされなくなり、デリゲートのみがサポートされます
デリゲートは他のイベント バインディング スタイルとは異なり、非常に特別です。
前のバインドスタイルに慣れていたのでつまずいてしまいました。
簡単に言えば、不注意です。
delegate() メソッドは、指定された要素 (選択された要素の子要素) に 1 つ以上のイベント ハンドラーを追加し、これらのイベントが発生したときに実行する関数を指定します。
delegate() メソッドを使用するイベント ハンドラーは、現在または将来の要素 (スクリプトによって作成された新しい要素など) に適用されます。
文法
$(selector).delegate(childSelector,event,data,function)
パラメータ | 説明 |
---|---|
childSelector | 必須。イベント ハンドラーがアタッチされる 1 つ以上の子要素を指定します。 |
イベント |
必須。要素に付加する 1 つ以上のイベントを指定します。 スペースで区切られた複数のイベント値。有効なイベントである必要があります。 |
data | 可选。规定传递到函数的额外数据。 |
function | 必需。规定当事件发生时运行的函数。 |
比如这段小代码啊
<html> <head> <script type="text/javascript" src="/jquery/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("div").delegate("button","click",function(){ $("p").slideToggle(); }); }); </script> </head> <body> <div style="background-color:red"> <p>这是一个段落。</p> <button>请点击这里</button> </div> </body> </html>
我老写成了
$(document).ready(function(){ $("div").delegate($("button"),"click",function(){ $("p").slideToggle(); }); });
子选择器不需要选择起来了..
不然就像我那样出现不知名的错误(点击会触发click,但点击其他元素也会触发click...)
以上所述就是本文的全部内容了,希望大家能够喜欢。