jQuery使用带有重音字符的id搜索div

时间:2014-12-21 16:33:49

标签: javascript jquery html

我的动态搜索有问题。我想找到包含特定文本的id的div,它一直运行良好,直到我尝试找到带有重音符号的东西。升。

我正在使用这个选择器:

$('.user-row[id*='+searchText+']')

我尝试了输入和

val().indexOf(searchText) > 0 

但它也没有用。

3 个答案:

答案 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;
&#13;
&#13;

是的,我知道,在一个页面中不应该是相同的ID,但很高兴知道这种差异