Как использовать jQuery, чтобы игнорировать регистр при выборе? - PullRequest
16 голосов
/ 06 марта 2009

Я сейчас пытаюсь отключить ссылку, используя следующий селектор jQuery:

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

Проблема в том, что иногда href не всегда может быть строчным на странице. Когда это происходит, селектор больше не совпадает.

Кто-нибудь знает, как это обойти? Могу ли я изменить это поведение один раз, чтобы игнорировать регистр?

Ответы [ 4 ]

14 голосов
/ 06 марта 2009

Я столкнулся с этим сам. Я немного переключил логику, чтобы позволить мне сравнить ее без случая. Требуется немного больше работы, но, по крайней мере, это работает.

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

Вы должны выяснить собственную логику endsWith.

5 голосов
/ 06 марта 2009

jQuery был построен для расширения. Вы можете исправить это или добавить свой собственный тип нечувствительного к регистру селектора.

Рик Штрал: Использование jQuery для поиска контента и создание пользовательских фильтров селектора

1 голос
/ 21 сентября 2012

Сначала это выражение NOT VALID , поскольку оно содержит \,

Если вы хотите использовать любой из метасимволов (например, !"#$%&'()*+,./:;<=>?@[\]^``{|}~) как

буквальная часть имени, вы должны экранировать персонажа двумя обратными слешами: \\.

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

так что вы должны бежать от / до \\/

так что ваше выражение будет $("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");

1 голос
/ 30 июля 2012

Вы можете использовать функцию "is" в jQuery. Он не чувствителен к регистру.

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