使用jQuery .find()结合^=选择器返回结果过多问题
解决jQuery.find()匹配id时的“误伤”问题
嘿,我懂你碰到的这个坑!你肯定是用了前缀匹配的属性选择器(比如[id^="sel_1"]),才会把sel_1、sel_11、sel_12都捞出来——这种选择器会匹配所有以sel_1开头的id,自然会把带后缀的元素也包含进去。
给你几个靠谱的解决方案,按优先级排序:
最推荐:直接通过id查找
因为HTML规范里id是全局唯一的,哪怕你在某个父元素范围内查找,直接用id选择器也绝对不会出错,而且效率最高:// 假设你的父元素选择器是#parentContainer $('#parentContainer').find('#sel_1');甚至更简化的写法(因为id唯一,其实不用限定父元素也能找到,但如果是业务需要限定范围,上面的写法没问题):
$('#sel_1');精确属性匹配
如果因为某些原因必须用属性选择器,那就用精确匹配的语法,确保只选中id完全等于sel_1的元素:$('#parentContainer').find('[id="sel_1"]');额外提醒:避免用模糊前缀/后缀匹配
像[id^="sel_1"](前缀)、[id$="_1"](后缀)这类模糊匹配很容易出现你遇到的问题,除非你明确知道所有目标元素的id结构不会有重叠,否则尽量别用。
内容的提问来源于stack exchange,提问作者test Account
相关产品推荐
相关产品推荐

