2012-08-06 105 views
1

我创建基本上假货密码输入的输入暂时像这样:动态创建HTML元素失去属性在显示/隐藏

var fakeId = currentElement.attr("id") + "Fake"; 

var fakePasswordInput = $("<input>", 
{ 
    id: fakeId, 
    val: value, 
    type: "text", 
    class: cssClass 
}); 

currentElement.after(fakePasswordInput); 

我的问题是,当这种情况发生:

 currentElement.blur(function() { 
      if ($(this).val() == "") { 
       $(this).hide(); 
       var id = $(this).attr("id"); 
       var val = elements["#" + id]; 
       // have NO idea why, but it loses the CSS class AND the value. 
       $("#" + id + "Fake").show(); 
      } 
     }); 

最后一行,$("#" + id + "Fake").show();将愉快地显示该元素,但是它失去了它的CSS类和它所具有的值。为了解决这个问题,我做了以下工作:

$("#" + id + "Fake").val(val).addClass(cssClass).show(); 

这是一个黑客,我不喜欢。那么,为什么隐藏然后显示动态生成的HTML元素会失去其属性? (这发生在铬/ FF/IE)

EDIT

这是在一个单一的功能定义的。该cssClass是正确的,在最高层,像这样宣称:

function formBlur(elements) { 
    var cssClass = "default_text_input"; 
+1

如何在创建fakePasswordInput时获得cssClass和value? – 2012-08-06 09:35:32

+0

编辑向您展示 – Kezzer 2012-08-06 09:57:38

回答

0

试试这个

var fakePasswordInput = $("<input/>", 
{ 
    id: fakeId, 
    val: value, 
    type: "text", 
    class: cssClass 
}); 

你应该在创建时使用这种语法可能关闭输入标签

0

尝试将val参数更改为值。

var fakePasswordInput = $("<input/>", 
{ 
    id: fakeId, 
    value: value, 
    type: "text", 
    class: cssClass 
}); 

该类参数似乎是正确的。可能是因为价值论证不起作用。