动态添加的属性在html元素中不可见

时间:2014-01-19 13:21:35

标签: jquery html attr prop

我使用textbox动态地将“已禁用”属性添加到jQuery输入字段。但是查看生成的HTML,它在我已将“已禁用”属性添加到的textbox输入字段中不可见。

因为它没有添加到它,我的其他jQuery函数永远不会被输入。

这是我的代码:

这发生在doc load事件中的某些位置:

$('.testGroup :input').prop('disabled', true)

此功能会在您clickhover禁用输入时显示工具提示:

$('input:disabled').after(function (e) {
        debugger;
        d = $("<div>");
        i = $(this);
        d.css({
            height: i.outerHeight(),
            width: i.outerWidth(),
            position: "absolute",
        })
        d.css(i.offset());
        d.attr("title", i.attr("title"));
        d.tooltip();
        return d;
    });

我已使用/尝试了prop()attr(),但没有使用after()函数。

根据Paul Rosania,我应该使用prop()

还有另一种方法可以实现这个目标吗?

编辑jsFiddle

1 个答案:

答案 0 :(得分:1)

问题是添加工具提示的代码仅在DOM准备好后运行一次。 您需要为您禁用的每个元素调用它。

一个简单的解决方案是为您的工具提示编写一个方法:

function AddToolTip() {
    d = $("<div>");
    i = $(this);
    d.css({
        height: i.outerHeight(),
        width: i.outerWidth(),
        position: "absolute",
    })
    d.css(i.offset());
    d.attr("title", i.attr("title"));
    d.tooltip();
    return d;
}

然后,使用此方法将工具提示应用于在DOM ready上禁用的元素

$('input:disabled, button:disabled').after(AddToolTip);

在禁用输入元素时,再次调用该方法

$('#test').prop('disabled', true).after(AddToolTip);

Fiddle