JQuery несколько условий на селекторе - PullRequest
1 голос
/ 13 октября 2011

У меня есть приведенный ниже фрагмент jquery, который фильтрует любые ссылки, имеющие конкретное расширение, упомянутое в регулярном выражении. К этому условию я хочу проверить, начинается ли значение href с http://www.xyz.com. Как это можно сделать?

$('a:regex(href,\\.(zip|mp\\d+|mpe*g|pdf|docx*|pptx*|xlsx*|jpe*g|png|gif|tiff*))$').live('click', function (e) {
    // do some action..
});

Вспомогательная функция регулярного выражения ниже

jQuery.expr[':'].regex = function (elem, index, match) {
    var matchParams = match[3].split(','),
        validLabels = /^(data|css):/,
        attr = {
            method: matchParams[0].match(validLabels) ?
                        matchParams[0].split(':')[0] : 'attr',
            property: matchParams.shift().replace(validLabels, '')
        },
        regexFlags = 'ig',
        regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g, ''), regexFlags);
    return regex.test(jQuery(elem)[attr.method](attr.property));
}

1 Ответ

2 голосов
/ 13 октября 2011

Мне кажется, что в регулярном выражении есть ошибка (с позицией $).Но вот как вы бы связали селекторы:

$('a[href^=http://www.xyz.com]:regex(href,\\.(zip|mp\\d+|mpe*g|pdf|docx*|pptx*|xlsx*|jpe*g|png|gif|tiff*)$)').live('click', function (e) {
    // do some action..
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...