jQuery:not()选择器嵌套

时间:2013-05-20 03:55:45

标签: jquery jquery-selectors

我有这个HTML标记:

<div>
    <ul>
        <li>
            <div id="FieldWrap18" class="fieldSettings full" data-dependent="{19}" data-dependson="">
                <input id="Field_0_18" name="Field_0_18" type="checkbox" value="true">
                <input name="Field_0_18" type="hidden" value="false">
                Yes
            </div>
        </li>
        <li>
            <div id="FieldWrap19" class="fieldSettings full" data-dependent="" data-dependson="">
                <input id="Field_0_19" name="Field_0_19" type="checkbox" value="true">
                <input name="Field_0_19" type="hidden" value="false">
                No
            </div>
        </li>
    </ul>
</div>

我试图选择&#34;是&#34;使用此选择器的字段(我必须使用data-dependent属性)

$('div:not([data-dependent=""]) input:not([type="hidden"])').on('change', function () {
    alert('Yep!');
});

然而,它正在选择input个字段。我如何只选择non-empty data-dependent non-hidden input?这是一个带有非工作代码的jsFiddle。我知道选择器因为父div甚至没有data-dependent属性而中断,但我不知道如何构建我的选择器以在抓住时忽略该div一个具有该属性的人。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

尝试此选择器: -

Demo

  $(document).ready(function () {
     $('div[data-dependent]')
      .not('[data-dependent=""]')
      .find('input:not([type="hidden"])')
      .on('change', function () {
        alert('Yep!');
    });
 });

答案 1 :(得分:0)

这是你可以做到的一种方式。

   $('input[type="checkbox"]').on('change', function () {
     var parent = $(this).parent();
     if(parent.data().dependent.length > 0)
         alert('you clicked YES!');
     else
          alert('you clicked NO!');
});

这是jsfiddle工作。