Jquery 如何使筛选器搜索不区分大小写?

Jquery 如何使筛选器搜索不区分大小写?,jquery,Jquery,以下是JS脚本: this.searchUsers = function(searchUsername) { if (searchUsername==='') return; var temp = ("[data-username*='"+searchUsername + "']"; $("div .contactListItem").not(temp).hide(); }; 工作正常,但它对searchUsername区分大小写。 如何使其不区分大小写? (

以下是JS脚本:

this.searchUsers = function(searchUsername) {
    if (searchUsername==='') return;
    var temp = ("[data-username*='"+searchUsername + "']";
    $("div .contactListItem").not(temp).hide();     
};
工作正常,但它对searchUsername区分大小写。 如何使其不区分大小写?
(不改变数据用户名值)

如您所见,属性选择器区分大小写。要修改此行为,可以使用
filter()


首先将javascript字符串转换为小写形式,然后进行比较

方法返回转换为小写的调用字符串值


有关更多详细信息,请检查使用
searchUsername.toLowerCase()
。尝试使用.toLowerCase()函数将它们都设置为小写。问题是,上述操作只会修改
searchUsername
,而不会修改属性本身,因此它们仍然不匹配。但问题是属性本身可能不是小写,因此,您可能会将
Foo
Foo
进行比较,但仍然没有得到任何匹配项。问题是:它只过滤准确的用户名。我的原稿与任何部分都匹配,这多亏了星号:var temp=(“[data username*=”+searchUsername+“]”。“你是对的,我错了。我已经为你更新了答案
this.searchUsers = function(searchUsername) {
    if (searchUsername === '') 
        return;

    var temp = $("[data-username]").filter(function() {
        return $(this).data('username').toLowerCase().indexOf(searchUsername.toLowercase()) != -1;
    });
    $("div .contactListItem").not(temp).hide();     
};