Почему я не могу заставить это работать?
$("a").each(function() {
if ($(this[href$="?"]).length()) {
alert("Contains questionmark");
}
});
Ps: Это просто в упрощенном примере, чтобы облегчить вам обзор.
Почему я не могу заставить это работать?
$("a").each(function() {
if ($(this[href$="?"]).length()) {
alert("Contains questionmark");
}
});
Ps: Это просто в упрощенном примере, чтобы облегчить вам обзор.
Вы можете просто выбрать интересующие элементы.
$('a[href*="?"]').each(function() {
alert('Contains question mark');
});
http://jsfiddle.net/mattball/TzUN3/
Обратите внимание, что вы используете селектор attribute-ends-with
, в приведенном выше коде используется attribute-contains
селектор, что и похоже на то, что вы на самом деле намереваетесь.
$("a").each(function() {
if (this.href.indexOf('?') != -1) {
alert("Contains questionmark");
}
});
Это не работает, потому что это синтаксически бессмысленно. Вы просто не можете этого сделать в JavaScript.
Однако вы можете использовать jQuery:
if ($(this).is('[href$=?]'))
Вы также можете просто посмотреть значение "href":
if (/\?$/.test(this.href))
Наряду с точками, сделанными другими, селектор $=
представляет собой селектор с. Вам понадобится селектор *=
(contains):
$('a').each(function() {
if ($(this).is('[href*="?"')) {
alert("Contains questionmark");
}
});
Как отмечено Matt Ball, если вам не понадобятся также манипулировать ссылками без вопросительного знака (что может быть так, поскольку вы говорите, что ваш пример упрощен), было бы меньше кода и намного быстрее просто выбрать только ссылки, которые вы хотите начать с:
$('a[href*="?"]').each(function() {
alert("Contains questionmark");
});
Попробуйте следующее:
$("a").each(function() {
if ($('[href$="?"]', this).length()) {
alert("Contains questionmark");
}
});
используйте этот
$("a").each(function () {
var href=$(this).prop('href');
if (href.indexOf('?') > -1) {
alert("Contains questionmark");
}
});