我正在创建一个基本上临时伪造密码输入的输入,如下所示:
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 元素会丢失它的属性呢?(这发生在 Chrome/FF/IE 中)
编辑
这一切都在一个函数中定义。像这样在最cssClass
顶部声明:
function formBlur(elements) {
var cssClass = "default_text_input";