jQuery:如果这个HREF包含

时间:2011-06-16 15:46:07

标签: javascript jquery

为什么我不能让它工作?

$("a").each(function() {
    if ($(this[href$="?"]).length()) {
        alert("Contains questionmark");
    }
});

Ps。:这只是一个简化的例子,让您更容易获得概述。

6 个答案:

答案 0 :(得分:84)

你可以直接选择感兴趣的元素。

$('a[href*="?"]').each(function() {
    alert('Contains question mark');
});

http://jsfiddle.net/mattball/TzUN3/

请注意,您使用的是attribute-ends-with selector,上面的代码使用的是attribute-contains selector,这听起来就像是您的目标。

答案 1 :(得分:19)

$("a").each(function() {
    if (this.href.indexOf('?') != -1) {
        alert("Contains questionmark");
    }
});

答案 2 :(得分:3)

它不起作用,因为它在语法上是荒谬的。你根本不能在那样的JavaScript中做到这一点。

但是,您可以使用jQuery:

  if ($(this).is('[href$=?]'))

您还可以查看“href”值:

  if (/\?$/.test(this.href))

答案 3 :(得分:2)

除了他人提出的观点之外,$=选择器是“ends with”选择器。您需要*=contains)选择器,如下所示:

$('a').each(function() {
    if ($(this).is('[href*="?"')) {
        alert("Contains questionmark");
    }
});

Here's a live demo ->

如Matt Ball所述,除非您需要操作没有问号的链接(可能是这种情况,因为您说您的示例已经简化),所以只需选择仅更少的代码和更快的代码您想要开头的链接:

$('a[href*="?"]').each(function() {
    alert("Contains questionmark");
});

答案 4 :(得分:1)

使用此

$("a").each(function () {
    var href=$(this).prop('href');
    if (href.indexOf('?') > -1) {
        alert("Contains questionmark");
    }
});

答案 5 :(得分:0)

试试这个:

$("a").each(function() {
    if ($('[href$="?"]', this).length()) {
        alert("Contains questionmark");
    }
});