Javascript 为什么“[value='']”在IE7中抛出异常而“:not(:not([value=''])”不抛出异常?

Javascript 为什么“[value='']”在IE7中抛出异常而“:not(:not([value=''])”不抛出异常?,javascript,jquery,internet-explorer-7,Javascript,Jquery,Internet Explorer 7,我试图通过jQuery从选择框中选择带有值的选项标签选项。我使用以下选择器: $("[value='']"); 这适用于大多数浏览器,但在IE7中会引发异常。如果我将其更改为以下imho等效选择器,则其工作正常: $(":not(:not([value='']))"); 我不想用后者,但想不出比前者更好的等价物 编辑: jQuery版本:1.3.1。 例外情况: Microsoft JScript运行时错误:引发异常但未捕获 在 在哪里 ab = "value='']" 测试设置: 为了确

我试图通过jQuery从选择框中选择带有值的选项标签选项。我使用以下选择器:

$("[value='']");
这适用于大多数浏览器,但在IE7中会引发异常。如果我将其更改为以下imho等效选择器,则其工作正常:

$(":not(:not([value='']))");
我不想用后者,但想不出比前者更好的等价物

编辑: jQuery版本:1.3.1。 例外情况: Microsoft JScript运行时错误:引发异常但未捕获 在

在哪里

ab = "value='']"
测试设置: 为了确保我的其他代码没有引起问题,我在以下情况下复制了错误:

<html>
    <head>
        <script type="text/javascript" src="jquery-1.3.1.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                alert($("option[value='']").html());
            });
        </script>
    </head>
    <body>
        <select>
            <option value="">test</option>
            <option value="1">test1</option>
            <option value="2">test2</option>
        </select>
    </body>
</html>
编辑:
理想情况下,它不应该给你任何错误。如果没有任何其他元素可以使用value属性进行搜索,请尝试同时指定标记类型$input[value=]。

我建议您使用最新的jQuery版本,这将解决您的问题。但如果您使用此版本有充分的理由,则应尝试以下操作:

这应适用于所有浏览器:

alert( jQuery( 'input[value=]' ) );

使用JSFIDLE测试,没有错误:

告诉您的jquery版本它抛出一个异常-它说了什么?试试jquery 1.7.1。它修复了一大堆这样的bug。你应该升级到1.3.2+看看这个问题:@MatthijsWessels,为什么不呢?您可以添加jQuery 1.7.1并使用noconflict使其继续使用1.3以实现所需的向后兼容性,并将较新的jQuery用于通用代码。不工作意味着您仍然会遇到相同的错误,或者它没有选择正确的元素?你有哪些元素?仍然抛出相同的错误。我在测试环境中用最少的元素复制了它。我将用我的测试设置更新这个问题。谢谢,这似乎会起作用,尽管我想知道这是否会计算为输入[value],它将返回带有value属性的所有元素。顺便说一句,只让我们针对jQuery1.3.2进行测试,在jQuery1.3.2中不存在此错误[value=]工作正常。尽管如此,我在测试设置中对其进行了测试,您的解决方案似乎在1.3.1.AFAIK中工作。这将永远不会计算为输入[value],因此您是安全的:
alert( jQuery( 'input[value=]' ) );