Stacking: last и: проверил селекторы jQuery вместе - PullRequest
3 голосов
/ 07 апреля 2010

Я пытаюсь настроить пользовательскую проверку для флажка.У меня есть 7 флажков с одинаковыми именами, и я хочу определить, установлен ли последний.Это код, который у меня есть, и я знаю, что он неправильный, может кто-нибудь пролить свет на то, как правильно сложить селекторы: last и: selected вместе?

$.validator.addMethod('ObserverOtherBox',function(v, e) {
   return ($('[[name="4_observers"]:last]:checked').length == 1) && ($('[name="4_observerstxt"]').length == 0) ;
}, 'Please enter the other observers');

Ответы [ 2 ]

10 голосов
/ 07 апреля 2010

Вы складываете селекторы так:

$('[name="4_observers"]:last:checked')

Просто добавьте их вместе, без пробелов, это работает для всех селекторов, будь то:

$('[name="4_observers"][id=4][rel=bob]')
// or:
$(':input:checkbox:last:checked')

Или, конечно, это ужасные фактические селекторы, но вы понимаете:)

Кроме того, кроме того, вы можете написать свой конкретный код, например, немного яснее:

$.validator.addMethod('ObserverOtherBox',function(v, e) {
  return $('[name="4_observers"]:last').is(':checked') 
      && $('[name="4_observerstxt"]').length == 0;
}, 'Please enter the other observers');
0 голосов
/ 14 февраля 2014

Спасибо, это сработало. Вместо «(проверено») я использовал .prop («проверено»),

        var lastCheckBox = $('[name="LastCheckboxId"]:last');

        //onload
        $(".someDiv").hide();
        if (lastCheckBox .prop('checked')) {
            $(".someDiv").show();
        }

        //onchange
        lastCheckBox.change(function () {
            if ($(this).prop('checked')) {
                $(".someDiv").show();
            } else {
                $(".someDiv").hide();
            }
        });
...