Подтвердить что ты не робот

JQuery: если этот HREF содержит

Почему я не могу заставить это работать?

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

Ps: Это просто в упрощенном примере, чтобы облегчить вам обзор.

4b9b3361

Ответ 1

Вы можете просто выбрать интересующие элементы.

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

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

Обратите внимание, что вы используете селектор attribute-ends-with, в приведенном выше коде используется attribute-contains селектор, что и похоже на то, что вы на самом деле намереваетесь.

Ответ 2

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

Ответ 3

Это не работает, потому что это синтаксически бессмысленно. Вы просто не можете этого сделать в JavaScript.

Однако вы можете использовать jQuery:

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

Вы также можете просто посмотреть значение "href":

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

Ответ 4

Наряду с точками, сделанными другими, селектор $= представляет собой селектор с. Вам понадобится селектор *= (contains):

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

Здесь живое демо →

Как отмечено Matt Ball, если вам не понадобятся также манипулировать ссылками без вопросительного знака (что может быть так, поскольку вы говорите, что ваш пример упрощен), было бы меньше кода и намного быстрее просто выбрать только ссылки, которые вы хотите начать с:

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

Ответ 5

Попробуйте следующее:

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

Ответ 6

используйте этот

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