2011-06-16 94 views
27

爲什麼我不能得到這個工作?jQuery:如果這個HREF包含

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

ps .:這只是一個簡化的例子,使您更容易獲得概述。

+0

$(「A」)的每個(函數(){ 控制檯.debug($(this [href $ =「?」]); if( $(this [href $ =「?」])。length()){ alert(「Contains questionmark」); } }); – MLS 2011-06-16 15:47:39

回答

62

你可以直接選擇感興趣的元素。

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

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

請注意,您正在使用的attribute-ends-with selector,上面的代碼使用attribute-contains selector,這是它聽起來像你真正瞄準。

+0

Ohhh ...謝謝...... :-) – 2011-06-16 15:56:06

+0

@Matt - 請注意,在當前版本的jQuery中,要匹配的字符串需要引號。 – Ender 2011-06-16 15:59:26

+1

@Ender根據API文檔,你是對的。在實踐中,報價並不總是必要的,但正如你所說,在這裏它們是必要的。 – 2011-06-16 16:05:13

0

試試這個:

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

這是行不通的,因爲它告訴jQuery在「.each()」上下文中尋找''標籤,它是''的*後代。 – Pointy 2011-06-16 15:48:59

+0

更正。接得好。 – 2011-06-16 15:49:39

3

它不起作用,因爲它的語法荒謬的。你無法像JavaScript那樣做。

你可以,但是,使用jQuery:

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

你也可以看的 「href」 值:

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

以上都不給我提醒,儘管它裏面有一個問號的鏈接... – 2011-06-16 15:53:11

+0

[對我來說很好用](http://jsfiddle.net/WtXq8/) – Pointy 2011-06-16 15:56:37

0

使用本

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

+1簡潔 – jvenema 2011-06-16 15:50:55

+1

用'this.href'代替jQuery的不必要的手段會更簡單。這也不是真的正確,因爲最初的問題似乎想找到一個「?」在「href」值的* end *處(這將是一個可以理解的事情)。 – Pointy 2011-06-16 15:53:20

+1

@Pointy我不認爲OP意識到他在使用attribute-ends-with選擇器。 – 2011-06-16 15:58:08

2

與其他人一樣,$=選擇器是「ends with」選擇器。你會希望*=contains)選擇,像這樣:

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

Here's a live demo ->

正如馬特·鮑爾指出,除非你還需要操作沒有一個問號鏈接(這可能是這種情況,既然你說你的例子被簡化),這將是更少的代碼,更快速地簡單地只選擇你想要開始鏈接:

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