2012-08-06 110 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 
}); 

該類參數似乎是正確的。可能是因爲價值論證不起作用。