我的动态搜索有问题。我想找到包含特定文本的id的div,它一直运行良好,直到我尝试找到带有重音符号的东西。升。
我正在使用这个选择器:
$('.user-row[id*='+searchText+']')
我尝试了输入和
val().indexOf(searchText) > 0
但它也没有用。
答案 0 :(得分:3)
我能想到的唯一问题是你没有使用HTML 5。
HTML 4.01规范声明ID令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符( - ),下划线(_),冒号(:)和句点(。)。
HTML5摆脱了对id属性的额外限制。
https://mathiasbynens.be/notes/html5-id-class
因此,在HTML 5中,特殊的重音字符(例如描述的Ł)绝对允许在id中使用。
JSFiddle演示:http://jsfiddle.net/7cq25865/
$('.user-row[id*='+searchText+']')
确实有效。
答案 1 :(得分:0)
好的,所以我犯了愚蠢的错误。我用php strtolower分配div id。然后我降低了搜索文本,但是strtolower没有使用重音字符,所以我的div用Ł而不是ł命名。这就是选择器找不到它的原因。 mb_strtolower确实有效。案件结案:D
答案 2 :(得分:0)
这里也发现了一个与Jquery有趣的事实,但与此问题无关。
Jquery ID选择器通常只会选择匹配的第一个元素,但是对于任何id名称都包含重音字母,ID选择器将拾取所有这些。
此处示例:
$('#lesschars').css({backgroundColor: 'blue'});
$('#someŁchars').css({backgroundColor: 'red'});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="user-row" id="lesschars">ID with no accent, will select first element</div>
<div class="user-row" id="lesschars">ID with no accent, will select first element</div>
<br>
<div id="someŁchars" class="user-row">ID with accent, selects both</div>
<div id="someŁchars" class="user-row">ID with accent, selects both</div>
&#13;
是的,我知道,在一个页面中不应该是相同的ID,但很高兴知道这种差异