将属性添加到DOM元素

时间:2014-03-26 21:17:40

标签: javascript jquery html twitter-bootstrap dom

我有一个使用bootstrap 3生成的模态表单。它看起来没有可靠的方法来确定何时在屏幕上显示该表单。我正在尝试创建一个。我将两个事件附加到我的DOM元素,该元素在显示时以及何时被隐藏时发出信号。

jq_modal_login_form = $('#modal-login-form')[0]
jq_modal_login_form.on('shown.bs.modal', function () {
    jq_modal_login_form.active_onscreen = true;
});
jq_modal_login_form.on('hidden.bs.modal', function () {
    jq_modal_login_form.active_onscreen = false;
});

我尝试将名为active_onscreen的属性提供给上面的DOM元素。当我稍后查看调试器中的DOM元素时,该属性不存在。

我应该提一下,我对javascript非常新。属性甚至是正确的词在这里使用?看起来属性也有点用词不当。它可以是对象的属性,但也可以是object.attributes属性的属性,对吧?我认为后者是造型等等,并且不是我想要改变的地方。有没有人对我应该在这做什么有所了解?

3 个答案:

答案 0 :(得分:2)

在jQuery中:

$('selector').attr('attribute_name', 'value');

但是,您只能使用预定义属性,因为创建自定义属性需要在您的情况下不需要的其他设置(请参阅this question)。

在您的情况下,您可能只想在元素中添加active_onscreen类。类用于标识元素(而不仅仅用于CSS),因此它们非常适合此应用程序。您可以使用它将类添加到元素:

$('selector').addClass('active_onscreen').

当它不再处于活动状态时,您可以使用它来删除该类:

$('selector').removeClass('active_onscreen').

答案 1 :(得分:0)

如果您只想查看给定的模态是否打开,Bootstrap会为您执行此操作。您可以查看bs.modal数据属性:

$("element").data('bs.modal').isShown;

或类(但这种方法容易出现竞争条件):

$('#myModal').hasClass('in');

答案 2 :(得分:0)

您在这里做的是添加DOM对象的属性 - 而不是元素的属性

添加属性不一定会使属性镜像它。只有内置属性才能执行此操作。

如果要设置属性,而不是属性,可以使用jQuery的.attr()方法。