對於我的項目我需要一個可編輯的文本,所以我決定使用一些插件,但我也是新的jQuery,並決定創建我自己的可編輯標籤[內聯編輯]。javascript全局變量UNSET
這裏是我的代碼:
當用戶當用戶離開hoverable
$(".hoverable").live("focusout",function(){
var Hovertext = $.trim($(this).val());
if (Hovertext == null || Hovertext=="")
{
$(this).parent().text(CurrentOBJhtml);
}
else
{
$(this).parent().text(Hovertext);
}
return false;
});
問題是,當我開始編輯第一個元素是點擊與類editable
$(".editable").live("click",function(){
//alert($(this).text());
//CurrentOBJhtml = $(this).text();
if (typeof CurrentOBJhtml == 'undefined' || CurrentOBJhtml =="")
{
CurrentOBJhtml = $(this).text();
}
nextHtml = "<input style='border:1px solid red;' type='text' class='hoverable' value='"+CurrentOBJhtml+"' />";
var c = nextHtml;
$(this).html(c);
$(this).children().focus();//$(this).focus();
return false;
});
元素運作良好,但如果有兩個元素editable
第二個也獲得第一個值?
請檢查下面的例子:
<label class='editable'>userMania1</label>
<label class='editable'>userDirection1</label>
我可以編輯的第一個標籤,但是當我點擊第二個我得到第一個的值,所以第二個會是<label class='editable'>userMania1</label>
這是不正確。
請注意,我對這項技術有點新,並試圖學習我目前的項目,我該如何解決這個問題?
謝謝。由於以下行
nextHtml = "<input style='border:1px solid red;' type='text' class='hoverable' value='"+CurrentOBJhtml+"' />";
您分配值CurrentOBJhtml這是在編輯的第一個正確的方法去做設置
那麼'CurrentOBJhtml'是全球性的。你應該爲你的插件函數創建一個局部變量(如果你已經創建了一個合適的jQuery插件,這可能不是你發佈的代碼的情況)。或者,您可以使用'.data()':http://api.jquery.com/data/ – 2011-12-28 10:06:00
@FelixKling不,我不知道如何創建一個jQuery插件,有無論如何解決這個問題?謝謝 。 – Red 2011-12-28 10:09:10
對不起,我讀過你想要創建自己的插件;)如果你想,看看http://docs.jquery.com/Plugins/Authoring。否則,正如我已經說過的,使用'.data()'來存儲每個元素的值而不是全局變量。 – 2011-12-28 10:11:48