2016-08-15 3 views
0

У меня есть следующие:селектор в случае изменения

var deliveryform = ('form[id$="shipping_method"]'); 

$('body').on('change', (deliveryform "input[type=radio]"), {}, function(event) { 
    console.log('you changed the radio'); 
}); 

Но мой селектор не работает - мне нужно сделать, чтобы изменить что-то здесь?

ответ

0

Вам необходимо объединить селектор строк. Хотя вам предоставлен третий аргумент как {}, который не нужен вообще, так как вы не хотите передавать какие-либо данные вообще.

var deliveryform = 'form[id$="shipping_method"]'; 

$('body').on('change', deliveryform + " input[type=radio]", function(event) { 
    //     -----------^^^^^^^---------------^^^^^^----- 
    console.log('you changed the radio'); 
}); 

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

$('form[id$="shipping_method"] input[type=radio]').change(function(event) { 
    console.log('you changed the radio'); 
}); 

Если форма входа добавлены динамически затем заменить body с помощью селектора формы.

$('form[id$="shipping_method"]').on('change', "input[type=radio]", function(event) { 
    console.log('you changed the radio'); 
}); 
0

Ваш синтаксис не совсем прав. В качестве основного селектора используйте deliveryform. Попробуйте это:

var $deliveryform = $('form[id$="shipping_method"]');  
$deliveryform.on('change', "input[type=radio]", function(event) { 
    console.log('you changed the radio'); 
}); 
0

Вам нужно использовать так:

var deliveryform = $('form[id$="shipping_method"]'); // was missing dollor sign 
deliveryform.on('change', "input[type=radio]", {}, function(event) { 
    console.log('you changed the radio'); 
}); 

Альтернативный ответ на ваш вопрос:

var deliveryform = 'form[id$="shipping_method"]'; // removed() 

$('body').on('change', deliveryform + " input[type=radio]", {}, function(event) { 
//.     ^^------------------^^ 
    console.log('you changed the radio'); 
}); 
0
  1. Вы пропустите $ на вашем селекторе form.
  2. У вас уже есть объект form, так зачем связывать событие change на body? Просто используйте форму!

var deliveryform = $('form[id$="shipping_method"]'); 

deliveryform.on('change', "input[type=radio]", function() { 
    console.log('you changed the radio'); 
}); 
Смежные вопросы