如何在单选框name属性为fp_tax_category[]时检查其选中状态?
解决jQuery选择器中name带[]的语法错误问题
嘿,这个坑我之前踩过!问题出在方括号[]在jQuery的属性选择器里是有特殊语法意义的——它本身就是属性选择器的一部分(比如[attr=value]这种格式),所以直接写name=fp_tax_category[]的时候,解析器会误以为你在写属性选择器的结构,而不是把[]当成name属性值的一部分,自然就报语法错误了。
要保留fp_tax_category[]作为name属性值,有两种简单的解决办法:
方法一:用引号包裹属性值(推荐)
把整个name属性值用单引号或双引号括起来,这样jQuery就会把fp_tax_category[]当成完整的属性值来解析,不会混淆语法:
// 双引号包裹 $('input:radio[name="fp_tax_category[]"]:checked') // 或者单引号包裹(注意外层用双引号) $("input:radio[name='fp_tax_category[]']:checked")
这种写法可读性最高,也是日常开发里最常用的方案,尤其适合处理带特殊字符的属性值。
方法二:转义特殊字符
如果不想用引号,也可以用双反斜杠\\来转义方括号(因为JavaScript里单个反斜杠是转义符,所以需要两个来表示一个实际的反斜杠):
$('input:radio[name=fp_tax_category\\[\\]]:checked')
不过这种写法看起来比较繁琐,可读性不如第一种,除非有特殊场景需要,否则更推荐第一种方案。
测试一下,不管用哪种方法,都能正确选中name为fp_tax_category[]的单选框啦!
内容的提问来源于stack exchange,提问作者Abdus Sattar Bhuiyan
相关产品推荐
相关产品推荐

