这个问题突出了 .prop() 和 .attr() 之间的混淆。.attr() 方法直接处理 HTML 元素的属性,而 .prop() 处理底层 JavaScript 元素的 JavaScript 属性。
例如,虽然$('#myInput').attr('disabled', true)
和$('#myInput').prop('disabled', true)
具有相同的影响,但它们实际上以两种截然不同的方式运作。
$('#myInput').attr('disabled', true)
相当于document.getElementById('myInput').setAttribute('disabled', 'disabled');
并且$('#myInput').prop('disabled', true)
将相当于document.getElementById('myInput').disabled = true;
虽然后一个示例具有在元素上创建“禁用”属性的附加效果,但这是disabled
浏览器本机处理的输入属性的一个特性。
您的示例的问题是您正在尝试对在其 JavaScript 对象上$('#myModal .btn')
没有本机属性的锚元素进行操作。disabled
因此,设置.disabled = true
只不过是设置.foo = 'bar'
。浏览器本身不会为这些元素添加属性。
我希望这是有道理的。如果需要更多说明,我稍后会进行编辑。