Kürzlich habe ich Jquery verwendet, als ich an einem Projekt arbeitete. Ich bin auf einige „seltsame“ Probleme gestoßen (Meister, bitte geben Sie mir keine Vorwürfe).
Vielen Dank an Herrn ClassYuan für seine Unterstützung: http://www.classyuan.com/.
1. Beim Laden eines Ereignisses mit einem HTML-Element wird das Ereignis gleichzeitig mit dem Laden ausgeführt.
Fehlercode:
Quelle ansehen
PRint?1 $("#btnLoad").bind("click",GetProduct());
korrekter Code
Quelle ansehen
print?1 $("#btnLoad").bind("click", function() { GetProduct() });
In diesem Code habe ich die Bind-Methode ignoriert. Die API-Erklärung lautet bind(type,[data],fn)
Ich habe fn fälschlicherweise als einfache Funktion angesehen. Daher führt dieser Code den fn beim Laden einmal aus.
Dies ist ein Versehen im Schreibformat. Ich hoffe, jemand, der den Grund kennt, kann mir einen Rat geben.
2. Das Problem des Variablenbereichs. (Es scheint, dass dies kein Problem von jquery ist. Es ist der Unterschied zwischen js und .net.)
Quelle ansehen
print?1 Funktion text() {
2 für (var i = 0; i < 3; i++) {
3 $("<a>Delete</a>").attr({ id: "hr_" + i, href: "javascript:;" }).addClass("btnCSS").bind("click", Funktion () { tes(i) }).appendTo(".div_list");
4}
5}
6 Funktion tes(id) {
7 Warnung(id);
8}
Diese Funktion soll die entsprechende ID anzeigen. Das Ergebnis ist eine Funktion mit 3 <a>-Tags.
Nachdem ich es mir angesehen habe ... verstehe ich es
In Bezug auf das Problem des Variablenbereichs ist der an die tes-Funktion übergebene Parameter der Wert von i nach dem Ende der Schleife, sodass alle 3 sind.
Dies scheint anders zu sein als bei .net.
Endlich die Lösung - -.. Geben Sie einfach $(this) ein
3. Probleme mit der Reihenfolge der Veranstaltungsausführung
Quelle ansehen
print?1 <a target="_blank" title="Iphone" >
2 <img id="proImg7_2" src="" alt="Iphone" style="width:70px; height:60px; border:none;" />
3 </a>
Das onclick-Ereignis ist an dieses Bild gebunden. Der Inhalt des Ereignisses besteht darin, dem übergeordneten Element des <img>-Tags ein href-Attribut hinzuzufügen.
Aber nachdem das Ereignis ausgeführt wurde, springt es direkt zum Link des a-Tags. Nach der Analyse.
Es sollte sein, dass der Klick vor dem href ausgeführt wird, d. h. wenn auf das Bild geklickt wird, das A-Tag bereits das href hat und dann gleichzeitig das A-Tag ausgelöst wird.
Lösung: Entfernen Sie das äußere a-Tag von <img>. Ändern Sie dann das Ereignis
Quelle ansehen
print?1 idwrap(' <a href=" http://www.QQ.com"></a>' );
Die oben genannten Probleme sind für mich als Neuling bei der ersten Verwendung von jquery aufgetreten. Ich belasse sie hier und behandle sie als einen Prozess des Wachstums. Liebe Veteranen, beschweren Sie sich nicht.