2011-12-22 218 views
0

請檢查代碼..設置元素的HTML屬性jQuery中

$(".editable").live("click",function(){ 
CurrentOBJhtml = $(this).text(); 
nextHtml = "<input type='text' class='hoverable' value='"+CurrentOBJhtml+"' />"; 
var c = nextHtml; 
alert(c); //here two alert box comes.... 
$(this).html(c); 

}); 

當我提醒C,這兩種警告框提醒兩個值...

首先看重的是<input type='text' value='myname' class='hoverable' /> 第二個是<input type='text' value='' class='hoverable' />第二個沒有value

當我評論最後一行($(this).html(c);)時,它只給出第一個結果。

我的問題是什麼?我完全困惑。

請幫我解決這個問題。

謝謝。

更新:

HTML:

<fieldset id="user_info_module"> 
<label>username:</label> 
<label class="editable" id="user_info_username"> 
<label>Email:</label> 
<label id="user_info_email"> </label> 
<label>Default page:</label> 
<label id="user_info_defaultpage"></label> 
<label>mobile:</label><label id="user_info_mobile"></label> 
<label>country:</label><label id="user_info_country"></label> 
<label>address:</label><label id="user_info_address"></label> 
<label>pincode:</label><label id="user_info_pincode"></label> 
<label>landline:</label><label id="user_info_landline"></label> 
</fieldset> 

http://jsfiddle.net/M3J2p/1/

+0

您的選擇器'$(「。editable」)'與CSS類「可編輯」匹配的所有元素。 – Stefan 2011-12-22 07:28:29

+0

請發佈您的html代碼以獲得更好的答案 – 2011-12-22 07:48:05

+0

@Stefan,@ dku.rajkumar問題已更新。 – Red 2011-12-22 08:35:45

回答

1

第一件事把你的jQuery代碼放在$(document).ready(function());處理程序中。

並檢查這jsfiddle,它沒有顯示任何雙重警示框給我。當你點擊一個元素時,this將引用該特定元素而不是其他元素。

更新您的html代碼以確認問題的確切性或爲您的問題創建示例jsfiddle。

編輯:錯誤的原因和解決

的jQuery 1.7之前,從執行後使用.live()綁定一個 ,處理程序必須返回false停止進一步的處理。調用 .stopPropagation()不會完成此操作。

$("a").live("click", function(event){ 
    event.preventDefault(); 
}); 

檢查更新的jsfiddle按您的代碼。你錯過了關閉一個標籤,當你使用這個時發生上述事件冒泡問題。在更新jQuery使用.on() ..

檢查.live()在jQuery的文檔,以更好地瞭解這個。

+0

http://jsfiddle.net/M3J2p/1/試試這個 – Red 2011-12-22 08:38:58

+0

我已經更新了答案,並將您的jsfiddle與這個新的比較.. – 2011-12-22 09:09:40

+0

我自己得到了答案,但你解釋得很好,謝謝。 – Red 2011-12-22 09:20:03

1

可能是你與類兩個元素 「編輯」,或者你調用上面的代碼的兩倍。你在document.ready中有嗎?或通過函數調用它?

+1

@Dileep Dil,它解決了嗎? – 2011-12-22 07:56:24

+0

問題updated.Yes這是從Document.ready() – Red 2011-12-22 08:36:13

0

我想,$(「。editable」)會找到多個元素。如果你想找到一個特定的元素,考慮使用Id,或者你也可以檢查回調中目標是否是正確的。

$(".editable").live("click",function(event) 
{ 
    if (event.target == mytarget) 
    { 
     // do something 
    } 
}); 
+0

的一部分如果它,那麼當我評論'$(this).html(c);'它如何顯示一個alertbox? – Red 2011-12-22 08:37:23

+0

http://jsfiddle.net/M3J2p/1/ – Red 2011-12-22 08:41:14