Ich bin es gewohnt zu binden und zu leben, aber ich bin es nicht gewohnt zu delegieren...
Unterstützung für die Bindung von Ereignissen an dynamisch generierte Tag-Elemente kann Live und Delegate sein, aber die neue Version unterstützt nicht mehr Live, sondern nur Delegate
Delegate ist wirklich etwas Besonderes und unterscheidet sich von anderen Event-Bindungsstilen.
Ich bin gestolpert, weil ich an den vorherigen Bindungsstil gewöhnt war.
Um es einfach auszudrücken: Es ist Nachlässigkeit.
Diedelegate()-Methode fügt dem angegebenen Element (einem untergeordneten Element des ausgewählten Elements) einen oder mehrere Ereignishandler hinzu und gibt die Funktion an, die ausgeführt werden soll, wenn diese Ereignisse auftreten.
Ereignishandler, die die Methode „delegate()“ verwenden, gelten für aktuelle oder zukünftige Elemente (z. B. neue Elemente, die durch Skripte erstellt wurden).
Grammatik
$(selector).delegate(childSelector,event,data,function)
Parameter | Beschreibung |
---|---|
childSelector | Erforderlich. Gibt ein oder mehrere untergeordnete Elemente an, an die Ereignishandler angehängt werden. |
Ereignis |
Erforderlich. Gibt ein oder mehrere Ereignisse an, die dem Element zugeordnet werden sollen. Mehrere Ereigniswerte durch Leerzeichen getrennt. Muss ein gültiges Ereignis sein. |
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...)
以上所述就是本文的全部内容了,希望大家能够喜欢。