在选择时如何使用jQuery忽略大小写?

时间:2009-03-06 17:05:50

标签: jquery css-selectors case-sensitive

我目前正在尝试使用以下jQuery选择器禁用链接:

$("a[href$=/sites/abcd/sectors]").removeAttr("href");

问题在于,有时href在页面上可能并不总是小写。发生这种情况时,选择器不再匹配。

有谁知道怎么解决这个问题?我可以更改此行为一次以忽略大小写吗?

4 个答案:

答案 0 :(得分:14)

我自己遇到了这个问题。我稍微改变了一下逻辑,让我无需比较它。它需要更多的工作,但至少它是有效的。

$('a').each(function(i,n) {
    var href = $(n).attr("href");
    href = href.toLowerCase();
    if (href.endsWith('/sites/abcd/sectors'))
        $(n).removeAttr('href');
});

您必须弄清楚自己的endsWith逻辑。

答案 1 :(得分:5)

jQuery是为了扩展而构建的。您可以更正它或添加您自己的不区分大小写的选择器类型。

Rick Strahl: Using jQuery to search Content and creating custom Selector Filters

答案 2 :(得分:1)

你可以在jQuery中使用函数“is”。它不区分大小写。

   $("a").each(function() {
     if ($(this).is("a[href$=/sites/abcd/sectors]")) {
       $(this).removeAttr('href');
     }
   })

答案 3 :(得分:1)

首先这是 NOT VALID 表达式,因为它包含\

如果您希望将任何元字符(例如!"#$%&'()*+,./:;<=>?@[\]^``{|}~)用作

名称的文字部分,您必须使用两个反斜杠转义角色:\\

Src:http://api.jquery.com/category/selectors/

因此您必须将/转义为\\/

因此您的表达式为$("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");