【问题标题】:Problem with not() selector in IE8IE8 中 not() 选择器的问题
【发布时间】:2011-08-24 03:05:57
【问题描述】:

下面的 jQuery 代码行有问题

 var controls = selectedForm.find('input:not(type="hidden"), checkbox, select, textarea');

我要做的是选择 selectedForm 中不是<input type='hidden'....> 的所有元素。 selectedForm 是前一个选择器,用于选择感兴趣的表单对象。这个表单里面一共有5个字段,其中一个是隐藏的输入字段。

我的问题是在 IE8 中,变量“control”包含表单内的所有 5 个字段。在 FF6 中,这可以正常工作并返回我感兴趣的 4 个字段。

我假设我有语法错误,但我看不到它是什么。

【问题讨论】:

  • :not() 语句中的所有内容仍然需要适当使用,因为它会出现在:not() 语句之外,例如:not([attribute="value"]):not(:last-child)。我非常惊讶该语句在 FireFox 中有效,因为它不应该。

标签: jquery html jquery-selectors


【解决方案1】:

请注意,您正在尝试将attribute equals selector 用于属性“type”,该属性应该用括号括起来:

var controls = selectedForm.find('input:not([type="hidden"]), checkbox, select, textarea');

【讨论】:

    【解决方案2】:

    John Hartsock 正确识别了那里的问题(必须使用 [type="hidden"]),但是您也可以在不使用 :not 选择器的情况下编写该查询:

    selectedForm.find('input[type!="hidden"], checkbox, etc');
    

    http://api.jquery.com/attribute-not-equal-selector/

    【讨论】:

    • 关于问题,它似乎在 FF6 中不起作用。在 IE8 中,工作正常。
    猜你喜欢
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    相关资源
    最近更新 更多