JQuery селектор цепочки - PullRequest
2 голосов
/ 17 мая 2011

У нас возникла проблема при попытке объединить селекторы.Мы пытаемся получить все флажки, которые отмечены и имеют атрибут data-action с hideplan в качестве значения.У меня есть страница с двумя флажками, одной кнопкой и следующим javascript:

<script type="text/javascript">
    var hiddenplans = $('input:checkbox[data-action="hideplan":checked');
    $("#hide_btn").click(function() {
        hiddenplans.each(

        function(index) {
            alert('checked' + index);
        });
    });​ 
</script>

Это не отображает никаких предупреждений, когда один или несколько флажков установлены - скрытые планы пустыОднако, если мы скопируем $('input:checkbox[data-action="hideplan":checked'); и поместим его в консоль firebug и запустим его, мы получим результаты, если будет установлен один или несколько флажков.Если я удаляю: флажок, он будет предупреждать о флажках с data-action = hideplan.

Мы попробовали несколько различных способов написания селектора (например, $("input[type=checkbox][data-action=hideplan]:checked") и $("input[type=checkbox][data-action=hideplan]").filter(":checked"); и более), и они работают в консоли, но не будут возвращать оповещения.создал Fiddle с полным кодом на случай, если мы упустили что-то очевидное http://jsfiddle.net/xCnSs/5/

Ответы [ 3 ]

3 голосов
/ 17 мая 2011

Попробуйте это ...

$('input:checkbox[data-action="hideplan"]:checked')

jsFiddle .

1 голос
/ 17 мая 2011

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

$("#hide_btn").click(function () {
    var hiddenplans = $("input[type=checkbox][data-action=hideplan]:checked");
    hiddenplans.each(function (index) {
        alert('checked' + index);
    });
});

http://jsfiddle.net/xCnSs/6/

0 голосов
/ 17 мая 2011

Вы забыли закрывающую скобку:

$('input:checkbox[data-action="hideplan"]:checked');

Но помните, что вы также можете фильтровать результаты:

$('input:checkbox[data-action="hideplan"]').filter(':checked');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...