Dies ist ein interessanter. Ich kann nicht so tun, als würde ich dir sagen/warum/es funktioniert, und ich denke, es könnte sogar ein Grund sein, dies als Fehlerbericht an jQuery zu senden, weil das Verhalten, das sie dokumentieren, nicht so herauskommt, wie ich es erwarten würde .
Auf dieser Seite wird das folgende Zitat in Richtung der Unterseite: http://api.jquery.com/attr/
„Hinweis: Wenn nichts in der Setter-Funktion zurückgegeben wird (. Dh Funktion (index, attr) {}), oder wenn undefined wird zurückgegeben, der aktuelle Wert wird nicht geändert Dies ist nützlich, um Werte nur selektiv festzulegen, wenn bestimmte Kriterien erfüllt sind."
Dies führte mich einige Herumspielen auf jsFiddle zu tun. http://jsfiddle.net/mori57/GvLcE/
Beachten Sie, dass, im Gegensatz zu ihrer Dokumentation, Koffer 8 und 9 Rückkehr entweder null oder nichts Blick auf das, was Alnitak erwähnt, es scheint macht Sinn, da ihr Test/tatsächlich/nur validiert, dass es/ist eine Funktion/nicht, was diese Funktion zurückgibt (.isFunction sollte immer nur wahr/falsch zurückgeben, was anders ist als zu sagen, dass der zurückgegebene Wert wahr/falsch ist).
Am Ende würde ich sowohl Alnitak als auch bcoughlan zustimmen, dass dies nicht die Funktionalität ist, auf die Sie sich verlassen sollten Ich würde hinzufügen, dass es nicht nur instabil ist, weil es in zukünftigen Releases von jQuery geändert werden kann, sondern es auch eine schlechte Praxis ist, sich auf Hacks zu verlassen, die auf undokumentierte Funktionen angewiesen sind, weil zukünftige Entwickler des Codes heute schreiben schließt dich ein, in 2-4 Monaten!) könnte sehr leicht vergessen, dass es da ist, oder warum es so eingestellt ist. Weitaus besser, explizit zu sein und die Funktionalität so zu nutzen, wie sie dokumentiert ist, damit Sie sich selbst und anderen klar machen, was Ihr Code tun soll.
Ich würde vorschlagen, dass 'attr()' zu erstellen Click-Handler ist eine nicht unterstützte Methode in JQuery. Es gibt viele Dinge, die mit dem Framework funktionieren können, aber wenn sie nicht dokumentiert sind, können sie in zukünftigen Upgrades brechen. Habe gesehen, jQuery Entwickler-Team diese Philosophie in ihrem Support-Forum zum Ausdruck bringen – charlietfl
Der Grund, ich habe diese Frage geschrieben war, dass ich nicht verstehen konnte, warum Click-Handler abgefeuert, bevor es angewendet wurde. Bitte beachten Sie dies [jquery.ui.dialog.js L371] (https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.dialog.js#L371) – ASergey