为什么我不能让它工作?
$("a").each(function() {
if ($(this[href$="?"]).length()) {
alert("Contains questionmark");
}
});
Ps。:这只是一个简化的例子,让您更容易获得概述。
答案 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");
}
});
如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");
}
});