gpt4 book ai didi

javascript - getAttribute() 不检索禁用的原始值

转载 作者:行者123 更新时间:2023-11-28 07:56:03 27 4
gpt4 key购买 nike

以下代码片段中的代码演示了在更改 disabled 属性后,我无法检索原始属性值,至少对于 disabled 属性而言是如此。 The jQuery docs暗示 element.getAttribute() 应该能够检索原始值。

enter image description here

但是,它没有检测到 select 最初被禁用。

那么,这些文档有错吗? bool 属性有不同吗?最重要的是,有没有办法在使用 prop() 更改后获取原始值?

注意我正在使用 jQuery 1.8.3,它由 Opera 中的 Chromium 37 进行解释。

$('button').on('click', function() {
var $inputs = $('input, select');
$inputs.each(function() {
var $this = $(this);
var name = $this.prop('name');
console.log('before changing ' + name + '...');
console.log("\tgetAttribute: " + $this[0].getAttribute('disabled'));
console.log("\tprop: " + $this.prop('disabled'));
console.log("\tattr: " + $this.attr('disabled'));

$this.prop('disabled', true);

console.log('after changing ' + name + '...');
console.log("\tgetAttribute: " + $this[0].getAttribute('disabled'));
console.log("\tprop: " + $this.prop('disabled'));
console.log("\tattr: " + $this.attr('disabled'));
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<button>Click</button>
<input name="input" type="text" disabled='disabled' />
<select name="select">
<option>Option</option>
<option>Option</option>
<option>Option</option>
</select>

编辑

不幸的是,问题位于 .prop() vs .attr()当涉及到诸如禁用之类的 bool 属性时,实际上并没有回答问题。考虑这个 fiddle :http://jsfiddle.net/garreh/uLQXc 。在1.8.3下运行良好。现在,考虑这个 fork ,它改变了“disabled”而不是“blah”:http://jsfiddle.net/wrn1ryjq/1 。输入最初未禁用。更改后,即使 attr 也会返回“已禁用”。因此,attr 返回原始值的常见答案似乎并不正确。我的问题仍然存在:用 prop 改变它后,我如何找出原来的禁用状态?

编辑嗯,这很尴尬。当然 attr() 不会检索原始值。文档说不会。真正的问题是,在使用 with prop 禁用后,如何从输入中获取禁用的原始值。

不幸的是,根据this comment ,这是不可能的:/不过感谢您的建议。

最佳答案

由于 prop 仅当元素具有该属性时才起作用,因此当涉及到那些未禁用的输入字段时,您将不会获得它返回的任何值。

使用 attr 也存在同样的问题,因为它会检查元素是否具有该特定属性。

相反,我建议您使用 $('#someId:disabled').length 来查看您正在查找的元素是否具有禁用属性。选择器将只能找到那些具有 disabled 属性的元素,因此它将导致 01 .

查看此fiddle .

HTML

<input id="input1" disabled />
<input id="input2" disabled="true" />
<input id="input3" />

Javascript

$('#result').append($('#input1:disabled').length);
$('#result').append($('#input2:disabled').length);
$('#result').append($('#input3:disabled').length);

关于javascript - getAttribute() 不检索禁用的原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26069517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com