Этот вопрос освещает путаницу между .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
для входов, которые изначально обрабатываются браузером.
Проблема с вашим примером заключается в том, что вы пытаетесь работать с элементами привязки $('#myModal .btn')
, которые не имеют собственного свойства disabled
на своих объектах JavaScript. Поэтому установка .disabled = true
делает не более .foo = 'bar'
. Браузер не собирается добавлять атрибут для этих элементов.
Надеюсь, это имеет смысл. Я буду редактировать позже, если потребуется дополнительное разъяснение.
Я создал пример, который более легко демонстрирует эту проблему - http://jsfiddle.net/jaredhoyt/WNRUj/1/ – jaredhoyt
@jaredhoyt: Я нажимаю «отключить» и вижу, что кнопки отключены, а привязки не отключены. Однако для второго канала есть «отключено», hm – zerkms