2012-07-02 31 views
0

我有我試圖建立在一個簡單的jQuery腳本,但我不能讓HREF字符串比較返回true:jQuery的this.href字符串比較不工作

<a class="test" href="/Services/Cloud-Hosting">Click Me</a>​ 

我的腳本如下如下:

$('.test').click(function() { 
if ($(this).href == "/Services/Cloud-Hosting") { 
    alert('hi'); 
} 
else { 
    alert('no'); 
} 
});​ 

我不斷收到的「不」,甚至認爲HREF中是相同的警報。我錯過了什麼?

+0

現在你得到你的答案後,檢查這個知道解釋http://stackoverflow.com/questions/3722544/what-is-the-difference-between-this-and-this – Adi

回答

8

變化:

if ($(this).href 

要:

if (this.href 

或者$(this).attr('href')但前者是更好的。

要讀取的屬性,你需要使用attr(簡寫爲attribute

這是你應該擁有的一切:

if (this.href == "/Services/Cloud-Hosting") { 
    alert('hi'); 
} 
else { 
    alert('no'); 
} 
+4

小心使用'this。 href',在Chrome中返回鏈接的絕對路徑(不管「href」是相對URL)。 [演示](http://jsfiddle.net/QCx6D/)。 –

+0

太棒了,謝謝。 $(this).attr('href')做到了。 –

+0

@KyleSuss:不客氣 – Blaster

1

.attr()和嘗試這個辦法:

$(this).attr('href') == "/Services/Cloud-Hosting" 

代替

3

試試這個:

if ($(this).attr('href') == "/Services/Cloud-Hosting") { 
1

jQuery對象沒有href屬性。只需使用this.href訪問HTMLAnchorElement的屬性,而不是使用$(this)創建新的jQuery對象。

+1

正如另一個答案所指出的那樣'this.href'不一定等於'$(this).attr('href')'。 [演示](http://jsfiddle.net/QCx6D/)。 –

+0

@DavidThomas在這種情況下不會'this.getAttribute('href')'是首選方式嗎? – Paulpro