jQuery Version: 1.4.1jQuery focusin und focusOut Live-Events feuern nicht
Ich versuche, ein einfaches Wasserzeichen Art Plugin zu schreiben, und ich möchte alle da nicht die Vorteile von Live-Veranstaltungen teilzunehmen der Elemente I Es muss während des Ladens der Seite vorhanden sein, oder sie können aus dem DOM hinzugefügt und entfernt werden. Aus irgendeinem Grund werden die Ereignisse jedoch nie ausgelöst.
Hier ist der nicht funktionierenden Code:
; (function($) {
$.fn.watermark = function(text) {
return $(this).each(function() {
$(this).live('focusout', function() {
if (this.value == "") {
this.value = text;
}
return false;
});
$(this).live('focusin', function() {
if (this.value == text) {
this.value = "";
}
return false;
});
});
}
})(jQuery);
Ich kann dies ohne Verwendung von Live-Events zu arbeiten. Dieser Code funktioniert:
; (function($) {
$.fn.watermark = function(text) {
return $(this).each(function() {
$(this).focusout(function() {
if (this.value == "") {
this.value = text;
}
return false;
});
$(this).focusin(function() {
if (this.value == text) {
this.value = "";
}
return false;
});
});
}
})(jQuery);
'$ (this) .each' sollte' this.each' aus den gleichen Gründen ersetzt werden. – jAndy
@jAndy - Eigentlich braucht er überhaupt kein '.each()', nur verkettete Selektoren :) –
Etwas scheint hier nicht richtig zu sein. Ich dachte, du solltest immer this.ach verwenden? Siehe: http://stackoverflow.com/questions/2678185/why-return-this-eachfunction-in-jquery-plugins –