2011-12-22 141 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