jQuery Versión: 1.4.1jQuery focusin y focusOut eventos no están disparando
Estoy intentando escribir un plugin simple tipo de marca de agua y yo quiero tomar ventaja de los eventos en vivo ya que no todos los elementos que necesidad de usarlo existirá durante la carga de la página, o pueden ser añadidos y eliminados del DOM. Sin embargo, por alguna razón, los eventos nunca se disparan.
Aquí está el código no funciona:
; (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);
puedo conseguir que esto funcione sin necesidad de utilizar los eventos en vivo. Este código funciona:
; (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' debe ser sustituido por' this.each' por las mismas razones. – jAndy
@jAndy - En realidad él no necesita el '.each()' en absoluto, solo selectores encadenados :) –
Algo no parece correcto aquí. Pensé que siempre deberías usar return this.each? Ver: http://stackoverflow.com/questions/2678185/why-return-this-eachfunction-in-jquery-plugins –