Учитывая следующее JS / JQUERY, как не допустить его учета - PullRequest
1 голос
/ 28 марта 2010

У меня есть следующая строка кода, которая хорошо работает:

$("a.grouped_elements[href$=.jpg],a.grouped_elements[href$=.png],a.grouped_elements[href$=.gif]").fancybox();

Проблема в том, что если href .JPG, он не работает, он работает только с .jpg. Как я могу сделать вышеупомянутый регистр нечувствительным, чтобы либо все заглавные буквы, либо без заглавных букв, либо все сочетания соответствовали расширению файла?

Спасибо

Ответы [ 3 ]

5 голосов
/ 28 марта 2010

Очевидно, " функция фильтра должна делать то, что вам нужно ".

Поскольку я не знаком с функциями фильтра, я бы попробовал что-то вроде следующего, хотя я не уверен, насколько эффективно / неэффективно это можно сравнить с функциями фильтра, упомянутыми выше:

$('a.grouped_elements').each(function(){
    var elem = $(this);
    if(elem.attr('href').match(/(gif|jpg|png)$/i) != null) {
        elem.fancybox();
    }
});

(не был проверен, но это основной смысл)

1 голос
/ 28 марта 2010

Использование filter, как также упоминается @Ricket. Идея состоит в том, чтобы вернуть true, если мы хотим, чтобы элемент был включен, иначе false.

var fancyBoxable = $('a.groupd_elements').filter(function(){
    var href = $(this).attr('href') || '';
    return /(gif|jpg|png)$/i.test(href);
});

fancyBoxable.fancybox()
0 голосов
/ 29 марта 2010

Хорошо, это сработало:

$('a.grouped_elements').each(function(){
    var elem = $(this);
    // Convert everything to lower case to match smart
    if(elem.attr('href').toLowerCase().match('/gif|jpg|png/') != null) {
        elem.fancybox();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...