2016-02-20 6 views
-3
alert("setprice before"); 
$(".quantity").each($(".quantity").attr("disabled", false)); 
alert("setprice after"); 

У меня есть форма с рядом полей ввода класса .quantity, которые активируются после изменения требуемого поля.Javascript Выполнение функции неожиданно прекращается

$(".quantity").each($(".quantity").attr("disabled", false)); 

Предупреждения вызова до этой линии работает отлично, и сам вызов делает работу, как ожидаются, но предупреждающее сообщение после вызова не появляется. После этой строки ничего не помещается, но сама строка выполняется так, как ожидалось.

Что-то должно сломаться, но я не вижу, что. Какие-либо предложения?

+2

Я предлагаю вам заглянуть в консоль инструментов разработчика для ошибки, возникшей в строке 2 –

+2

Вам не нужно '$ .each' просто использовать' $ (". Quantity"). Prop ("disabled", false); ' – Tushar

+0

@Tushar - при условии, что у вас загружен jQuery (в обоих случаях) –

ответ

0

jQuery.each принимает функцию в качестве аргумента, поэтому оно должно быть:

$(".quantity").each(function() { 
    $(this).removeAttr("disabled"); 
}); 

Кроме того, для удаления атрибута вы должны использовать .removeAttr() функцию.

Как указано на @Tushar, если вы хотите изменить только атрибут нескольких элементов, вы можете просто сделать:

$(".quantity").prop("disabled", false); 
1

JQuery .each() метод принимает функцию. Но вместо этого вы передаете ему объект jQuery.

Вашего код должен быть просто

$(".quantity").attr("disabled", false); 

Поскольку методы JQuery инкубационных перебирает все элементы в коллекции по умолчанию.

или $(".quantity").prop('disabled', false) как упомянуто в комментариях.

Неисправленные ошибки останавливают выполнение сценария, поэтому вы не видите более позднее предупреждение.

Смежные вопросы