![](/img/trans.png)
[英]Why does removing, then re-adding bars to my stack bar chart change the position of the bars?
[英]Why is my jQuery plugin for removing text on focus and re-adding it on blur not working?
我希望當該文本框獲得焦點時,該文本框的value字段中的文本消失,然后響應最終的模糊事件而重新出現-但前提是該值是空的(即,如果用戶沒有將焦點放在文本框中后輸入任何內容)。 到目前為止,我有這個:
this.each(function() {
obj = $(this);
var initialText = obj.val();
obj.focus(function () {
if(obj.val() === initialText)
obj.val("");
});
obj.blur(function () {
if(obj.val() ==="")
obj.val(initialText);
});
});
如果頁面中只有一個元素,則此插件有效。 如果我有兩個元素,那就行不通了。 為什么會這樣呢?
obj變量沒有作用於函數,而是全局作用域,因此只有其中一個-設置為插件應用的最后一個變量。 使用var
關鍵字將變量的作用域僅限定於匿名函數,以便對插件應用的每一件事都有一個。
您需要將插件與代碼實現分開編寫。
您的插件如下所示:
(function($) {
$.fn.watermark = function() {
return this.each(function() {
var obj = $(this);
var initialText = obj.val();
obj.focus(function () {
if(obj.val() === initialText)
obj.val("");
});
obj.blur(function () {
if(obj.val() ==="")
obj.val(initialText);
});
});
};
})(jQuery);
然后使用您的插件:
$(document).ready(function() {
$('.watermark').watermark();
});
另外,作為tvanfosson,您需要在obj
上包含var
關鍵字。 如果在obj
聲明中沒有var
關鍵字,則只有最后一個文本框具有水印效果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.