Проблемы с jQuery при клике

Я пытаюсь запустить функцию с любой радиокнопки, когда они нажаты, но, похоже, она не работает.

Мой код:

$('.radio [name=list_in]').on('click', function() {
    updateListingForm('list_in');
});

Мой HTML:

<div class="fields">
    <div class="radio">
        <div class="pretty_rb styledRadio" style="background-image: url('images/form-radio-icons.png'); width: 19px; height: 20px; cursor: pointer; background-position: 0px -20px;"><input type="radio" checked="" value="auction" class="pretty_rb" id="list_site" name="list_in" style="display: none;"></div><label for="list_site">Site</label>
    </div>
    <div class="radio">
        <div class="pretty_rb styledRadio" style="background-image: url('images/form-radio-icons.png'); width: 19px; height: 20px; cursor: pointer; background-position: 0px 0px;"><input type="radio" value="store" class="pretty_rb" id="list_store" name="list_in" style="display: none;"></div><label for="list_store">Store</label>
    </div>                    
    <div class="contentClear"></div>
</div>

Я использую плагин jQuery для стилизации полей радио, и это HTML, который он выводит, поэтому обычные поля радио скрыты.

Я не могу использовать событие onclick из-за эта причина; вот почему я попытался использовать on здесь, но я не могу заставить его стрелять?

Что я делаю не так!?


person Brett    schedule 19.01.2014    source источник
comment
Можете ли вы назначить прослушиватель кликов отображаемым кнопкам вместо скрытых?   -  person Shomz    schedule 19.01.2014
comment
$(document).on('click','.radio [name=list_in]', function(){ updateListingFrom('list_in'); }); Попробуй это   -  person Seder    schedule 19.01.2014
comment
что-то не так с тем, как вы прикрепляете событие click. Я думаю, что это не вызвано, я создал этот jsfiddle, и это сработало. Вы завернули свой код клика в $(document).ready(function(){/*your code*/})?   -  person Mehran Hatami    schedule 19.01.2014


Ответы (3)


Назначьте прослушиватель отображаемым элементам вместо скрытых:

$('.radio .pretty_rb').on('click', function() {
    updateListingForm('list_in');
});
person Shomz    schedule 19.01.2014
comment
Ах, да, как глупо с моей стороны, я должен был подумать об этом, ха-ха..... моя единственная проблема в том, что мне придется поместить их в идентификатор, чтобы он не применялся к другим полям радио на странице, хотя ничего страшного.... Спасибо! - person Brett; 19.01.2014
comment
Да, вам нужен способ их различать, но это основная идея. Добро пожаловать, рад, что вы разобрались! :) Забавно, как никто не удосужился прочитать вопрос полностью... - person Shomz; 19.01.2014

Попробуй это,

$('.radio').on('click', function() {
    updateListingForm('list_in');
});
person Krish R    schedule 19.01.2014

Я думаю, вы пропустили $(document).ready(function() {...});

Этот код работает для меня:

$(document).ready(function() {
    $('.radio [name=list_in]').on('click', function() {
        alert('It works');
    });
});
person Hugo Chevalier    schedule 19.01.2014
comment
Метод on() работает только с видимыми элементами, вместо этого вы можете использовать делегирование: $(document).ready(function() { $('body').on('click','.radio [name= list_in]', function(){ alert(Это работает); }); }); - person Hugo Chevalier; 19.01.2014