curly_brackets
curly_brackets

Reputation: 5598

jQuery: If this HREF contains

Why can't I get this to work??

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

Ps.: This is just at simplifyed example, to make it easier for you to get an overview.

Upvotes: 53

Views: 136691

Answers (6)

Matt Ball
Matt Ball

Reputation: 359776

You could just outright select the elements of interest.

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

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

Note that you were using the attribute-ends-with selector, the above code uses the attribute-contains selector, which is what it sounds like you're actually aiming for.

Upvotes: 115

Christopher Armstrong
Christopher Armstrong

Reputation: 7953

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

Upvotes: 23

Ender
Ender

Reputation: 15221

Along with the points made by others, the $= selector is the "ends with" selector. You will want the *= (contains) selector, like so:

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

Here's a live demo ->

As noted by Matt Ball, unless you will need to also manipulate links without a question mark (which may be the case, since you say your example is simplified), it would be less code and much faster to simply select only the links you want to begin with:

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

Upvotes: 2

Amir Ismail
Amir Ismail

Reputation: 3883

use this

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

Upvotes: 4

Pointy
Pointy

Reputation: 413702

It doesn't work because it's syntactically nonsensical. You simply can't do that in JavaScript like that.

You can, however, use jQuery:

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

You can also just look at the "href" value:

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

Upvotes: 3

Timothy S. Van Haren
Timothy S. Van Haren

Reputation: 8966

Try this:

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

Upvotes: 0

Related Questions