jquery 选择器上的多个条件

发布于 2024-12-09 19:56:58 字数 858 浏览 0 评论 0原文

我有下面的 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));
}

I have the below jquery snippet which filters for any links which has a specific extension mentioned in the regular expression. To this condition, I want to check if the href value starts with http://www.xyz.com . How can that be done?

$('a:regex(href,\\.(zip|mp\\d+|mpe*g|pdf|docx*|pptx*|xlsx*|jpe*g|png|gif|tiff*))

The regex helper function is below

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));
}
).live('click', function (e) { // do some action.. });

The regex helper function is below

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

涫野音 2024-12-16 19:56:58

在我看来,正则表达式中存在错误($ 的位置)。但以下是链接选择器的方式:

$('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..
});

It looks to me like there's an error in the regex (with the position of the $). But here's how you would chain the selectors:

$('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..
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文