Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向DOM元素添加属性_Javascript_Jquery_Html_Twitter Bootstrap_Dom - Fatal编程技术网

Javascript 向DOM元素添加属性

Javascript 向DOM元素添加属性,javascript,jquery,html,twitter-bootstrap,dom,Javascript,Jquery,Html,Twitter Bootstrap,Dom,我有一个使用bootstrap3生成的模式表单。看起来没有可靠的方法来确定窗体何时显示在屏幕上。我正在尝试创建一个。我在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_moda

我有一个使用bootstrap3生成的模式表单。看起来没有可靠的方法来确定窗体何时显示在屏幕上。我正在尝试创建一个。我在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;
});
我试图在屏幕上为上面的DOM元素提供一个名为active_的属性。稍后在调试器中查看DOM元素时,该属性不存在

我应该提到,我对javascript非常陌生。属性在这里用得对吗?看起来属性也有点用词不当。它可以是对象的属性,但也可以是对象的属性。属性属性,对吗?我假设后者是样式等的发展方向,而不是我想要改变的。有人知道我应该在这里做什么吗?

在jQuery中:

$('selector').attr('attribute_name', 'value');
但是,您只能使用预定义属性,因为创建自定义属性需要额外的设置(请参阅),而这在您的情况下是不必要的

在您的情况下,您可能只想向元素添加一个活动的屏幕类。类是用来识别元素的(不仅仅是CSS),所以它们非常适合这个应用。您可以使用它向元素添加一个类:

$('selector').addClass('active_onscreen').
当该类不再处于活动状态时,您可以使用此选项删除该类:

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

如果您只想查看给定的模式是否处于打开状态,Bootstrap会帮您做到这一点。您可以检查
bs.modal
数据属性:

$("element").data('bs.modal').isShown;
或类(但此方法容易出现竞争条件):


这里要做的是添加DOM对象的属性,而不是元素的属性

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


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

我在之前的研究中看到了这一点,但我需要更多。我想在这里学习,而不是被填鸭式的回答。为什么这是有效的,但我所做的是无效的?@user1556487查看我的编辑。基本上,创建一个自定义属性是没有必要的,也不像你想象的那么容易。好吧,听起来很有道理。我会读更多关于课堂的内容。你说得对。我用了不正确的词。但是添加和检查DOM对象的属性有什么错呢?为什么这不起作用?它本身没有什么问题。你只是不能将它作为元素的属性来访问。我已经读到,第一选择在其他地方是不可靠的,并且会创造竞争条件。至于第二个选择,我的模态表单没有数据属性,所以我不断得到一个未定义的错误。有什么想法?@user1556487更新了我的答案。不知道为什么你没有数据属性。我在别处看到过同样的东西。。。我认为这是不对的。它不在任何地方的引导文档中
$('#myModal').hasClass('in');