jQuery .filter()方法不返回jQuery 1.5.1中预期的元素

时间:2013-06-06 12:59:39

标签: jquery jquery-selectors jquery-filter

我的一些HTML输入的名称包含多个方括号。

E.g。

<input name="skus[0].skuattributeoptions[1].sao_option_id" value="559" />

我已经读过,只要将值括在引号中,就可以使用带方括号的属性值。哪个没问题但是,当我在包含名称如上的元素的jquery对象上使用.filter()时,不会返回任何元素。

以下是Chrome控制台输出的屏幕截图,说明了我的意思。

inputs = $('[name="skus[0].skuattributeoptions[1].sao_option_id"]') 按预期返回三个元素。

但是当我在同一堆元素上使用inputs.filter('[name="skus[0].skuattributeoptions[1].sao_option_id"]')时,我得不到任何回报。

请注意,当传入.filter()的选择器只有一组方括号时,例如。 inputs.filter('[name*="skuattributeoptions[1].sao_option_id"]')过滤器返回我的预期!

我正在使用jQuery 1.5.1。我做错了吗?

http://www.photogifts.co.uk/content/images/affiliate/example/jquery-filter-issue.png

2 个答案:

答案 0 :(得分:1)

这是正确的,我只是尝试使用jQuery 1.5.1并返回一个空集[],我建议更新jQuery,如果你必须使用它,你可以阅读{而是{1}}属性:

name

http://jsfiddle.net/zVUNm/

修改:如果您转义inputs.filter(function() { return this.name === "skus[0].skuattributeoptions[1].sao_option_id"; }); []字符而不是使用引号,它也会有效,似乎有一个错误jQuery 1.5.1&#39; .方法:

.filter()

http://jsfiddle.net/tE4et/

嗯,那个版本是旧版本,它已于2011年2月发布,这个问题在新版本中并不存在。

答案 1 :(得分:0)

jQuery 1.5.1非常过时虽然添加到.filter()的最后一个功能是在jQuery 1.4(1.0中的选择器过滤器)中,但是已经有了修复。你的问题似乎是在jQuery 1.5.1和IE之间。你应该使用jQuery 1.10.1。