jQuery: нацеливание на отмеченные флажки родительского элемента - PullRequest
0 голосов
/ 08 апреля 2011

Я хочу связать функцию со всеми ссылками с помощью класса click, который будет оповещать о значениях всех флажков, которые «проверены» в родительском div этой ссылки.Я не должен понимать, как работает родительская функция jQuery, потому что я ожидаю, что два приведенных ниже кода JS будут делать то же самое, только второй более гибкий. Но первый (специфический таргетинг) работает, тогда как второй пример JS не 'т.

Любые указатели на то, что я делаю неправильно, были бы великолепны!

HTML:

<div id="wrapper">
<ul>
    <li><input type="checkbox" name="blue" value="blue" /></li>
    <li><input type="checkbox" name="red" value="red" /></li>
    <li><input type="checkbox" name="green" value="green" /></li>
</ul>

<a href="#" class="click">Submit</a>
</div>

Работает JS:

$('.click').click(function() {

    var colors = [];

    $('#wrapper :checkbox:checked').each(function(i){                         

        alert($(this).val());

        colors[i] = $(this).val();  

    });

    return false;

});

Не работаетJS:

$('.click').click(function() {

    var colors = [];

    $(this).parent(':checkbox:checked').each(function(i){                         

        alert($(this).val());

        colors[i] = $(this).val();  

    });

    return false;

});

Ответы [ 2 ]

2 голосов
/ 08 апреля 2011

Измените ваш второй блок кода на это, и оно должно работать:

$('.click').click(function() {

    var colors = [];

    $(this).parent().find(':checkbox:checked').each(function(i){                         

        alert($(this).val());

        colors[i] = $(this).val();  

    });

    return false;

});

Родительская функция ищет ваших предков и ищет элементы, соответствующие указанной строке. Если строка не указана, она возвращает вашего непосредственного предка. Комбинация parent() и find('...') должна делать то, что вы хотите.

Если вы хотите гарантировать захват div, вы также можете использовать .parent('div').find(':checkbox:checked').

0 голосов
/ 08 апреля 2011

Во второй функции вы говорите jQuery, чтобы получить родительский элемент, который отмечен флажком, но вы начинаете с привязки ( this указывает на объект jquery, имеющий привязку это было проверено), таким образом, родитель - это div.

В первом случае вы начинаете с div и устанавливаете флажки для дочерних элементов, которые отмечены.

...