Javascript jQuery`prop`在FireFox中无法使用details的`open`属性

Javascript jQuery`prop`在FireFox中无法使用details的`open`属性,javascript,jquery,html,Javascript,Jquery,Html,我想修复Firefox中详细的html元素行为 因此,我自己切换open属性,如下所示: $('summary').on('click', function () { var details = $(this).parent(); $('details').prop('open', !details.attr('open')); }); 我使用prop是因为open是一个属性而不是属性,对吧 无论如何,这在Firefox中不起作用,但如果我将prop更改为attr,它就会

我想修复Firefox中详细的html元素行为

因此,我自己切换
open
属性,如下所示:

$('summary').on('click', function () {
    var details = $(this).parent();  
    $('details').prop('open', !details.attr('open'));
});

我使用
prop
是因为
open
是一个属性而不是属性,对吧

无论如何,这在Firefox中不起作用,但如果我将
prop
更改为
attr
,它就会起作用

$('details').attr('open', !details.attr('open'));  

有人能告诉我哪里出了问题吗?Thnx

您正在使用的css标识一个属性。这就是为什么更改属性会得到css更改,而设置属性则不会

我使用道具是因为open是属性而不是属性,对吧

也可以是,这取决于你如何定义它。css同样引用属性

有人解释了它们的区别以及在哪里使用它们

简而言之 属性是HTML元素上的一个设置,它将某些数据或行为属性化到元素。它主要与加载相关,帮助我们正确地呈现HTML,这可能是您使用
prop
的原因


属性
是DOM节点的一个特征,告诉我们它的当前状态是foo。有一些特定的特性附着到特定的节点类型,有些是按标准附着的,有些是按浏览器设计附着的。由于它是DOM的一部分,这个属性一直伴随着DOM操作,也就是Javascript。

为什么不使用
open
类,然后简单地
toggleClass('open')
?我也这么认为,但这不是关键原因,因为使用prop不是添加prop open=“open”,而是使用attr add attribute open=“open”(检查它)@Bhojendra-C-LinkNepal,我不知道你的意思
prop
添加属性,
attr
添加属性。