2012-05-10 3 views
0

Я получил этуJQuery спусковой механизм не работает, как ожидалось

$('input[type=radio][name="voucher_type"]').live('change', function() { 
//stuff here 
}); 

Так что, когда радио-кнопка нажата, вещи случаются. Радиокнопка находится в пределах div, который оформлен как большая кнопка с фоновым изображением и т. Д.

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

$('div.voucher_box').click(function(){ 
    $(this).children('input').attr("checked", "checked"); 
    $(this).closest("input").trigger('click'); 
}); 

Я надеялся, что когда класс ДИВЫХ voucher_box щелкают, он бы вызвать щелчок/событие изменения на радиокнопке и запустить весь код, который запускается при изменении радиостанций.

Может ли кто-нибудь увидеть, что случилось? Благодарю.

+0

Не было бы лучше вызвать событие изменения, поскольку это то, что связано? – adeneo

+1

Можете ли вы опубликовать ссылку или поместить свой код в jsfiddle? – bodi0

ответ

2

Если вы связали change событие, то вы должны вызвать change событие, но не click:

$('div.voucher_box').click(function() { 
    $(this).children(":radio").prop("checked", true).trigger("change"); 
} 

Обратите внимание, что начиная с JQuery версии 1.7, метод .live() осуждается. Для присоединения обработчиков событий вы должны использовать .on().

+0

Привет, он выглядит хорошо, но я получаю сообщение об ошибке «prop()» - это не метод. Мы используем довольно старый jquery. 1.4.4. Вот почему? –

+0

Затем используйте 'attr (« checked »,« checked »)' вместо. – VisioN

+0

Я знал это! Благодарю. Большая помощь. –

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