【问题标题】:jQuery :not() selector nestingjQuery :not() 选择器嵌套
【发布时间】:2013-05-14 14:06:58
【问题描述】:

我有这个 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>

我正在尝试使用此选择器选择“是”字段(我必须使用 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 时忽略该 div。感谢您的帮助。

【问题讨论】:

  • 您为什么担心隐藏输入上的忽略 change 事件?通常没有什么会触发隐藏输入上的事件。
  • 这是一个很好的观点,我想我是出于绝望想办法让它发挥作用......

标签: jquery jquery-selectors


【解决方案1】:

试试这个选择器:-

Demo

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

【讨论】:

    【解决方案2】:

    这是您可以做到的一种方法。

       $('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 工作。

    【讨论】:

    • 正如我在描述中所说,我必须使用data-dependent,因为我的某些输入将不是复选框,而其他输入则根本没有该属性...
    • 是的,我用过。您可以将一个类添加到将成为触发器的每个元素中。使用它作为选择器,然后当它触发时抓取父母数据,正如我向你展示的那样,中提琴你很适合检查空值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多