16

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

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

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

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

4

4 回答 4

14

我自己遇到了这个。我稍微切换了逻辑以允许我在没有大小写的情况下进行比较。它需要更多的工作,但至少它有效。

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

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

于 2009-03-06T17:11:01.537 回答
5

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

Rick Strahl:使用 jQuery 搜索内容并创建自定义选择器过滤器

于 2009-03-06T20:49:17.800 回答
1

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

   $("a").each(function() {
     if ($(this).is("a[href$=/sites/abcd/sectors]")) {
       $(this).removeAttr('href');
     }
   })
于 2012-07-30T10:56:01.850 回答
1

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

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

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

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

/所以你必须逃避\\/

所以你的表情将是 $("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");

于 2012-09-21T15:22:14.460 回答