我的一些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
答案 0 :(得分:1)
这是正确的,我只是尝试使用jQuery 1.5.1并返回一个空集[]
,我建议更新jQuery,如果你必须使用它,你可以阅读{而是{1}}属性:
name
修改:如果您转义inputs.filter(function() {
return this.name === "skus[0].skuattributeoptions[1].sao_option_id";
});
,[
和]
字符而不是使用引号,它也会有效,似乎有一个错误jQuery 1.5.1&#39; .
方法:
.filter()
嗯,那个版本是旧版本,它已于2011年2月发布,这个问题在新版本中并不存在。
答案 1 :(得分:0)
jQuery 1.5.1非常过时虽然添加到.filter()
的最后一个功能是在jQuery 1.4(1.0中的选择器过滤器)中,但是已经有了修复。你的问题似乎是在jQuery 1.5.1和IE之间。你应该使用jQuery 1.10.1。