我正在尝试制作一个 jquery 插件(只是为了好玩),但我似乎无法在某些部分做我想做的事情。
(function($){
var resetText = function(){ if (this.value == "") this.value = this.title; }
var clearText = function(){ if (this.value == this.title) this.value = ""; }
$.fn.placeHolder = function() {
return this.each(function(){
resetText(); // <-- this doesn't work
$(this).focus(clearText).blur(resetText);
});
};
})(jQuery);
基本上,我希望将 title 属性复制到 doc.ready 和 field.blur 上的 value 属性(如果该值为空)
现在,它可以在Blur上运行,但不能在document.ready上运行
我感觉这是一个范围问题,但老实说我不知道如何解决它。
最佳答案
您遇到的是此
问题,而不是范围问题。
这样做:
resetText.call( this );
.call()
方法允许您将 resetText()
函数中 this
的值设置为您作为第一个参数。
在本例中,您将在 .each()
中传递由 this
表示的 DOM 元素。
编辑:
您实际上可以将插件减少到这样:
$.fn.placeHolder = function() {
return this.focus(clearText).blur(resetText).blur(); // <-- triggers blur
};
关于jquery - jQuery 插件可能存在范围问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036028/