2012-01-07 133 views
0

我目前使用javscript和類來處理我的點擊事件,像這樣:是否有沒有JavaScript的HREF替代?

<a class="forgotten" href="#">Forgot your password?</a> 

$('.forgotten').click(function(){ 
    location.href = "forgotten.php"; 
    return false; 
}); 

有沒有辦法先評估該功能,如果禁用JavaScript只是去forgotten.php?

我知道我可以很容易地刪除類,並添加forgotten.php到href,但我大量使用jquery地址,所以它會打破我的一些網站。

+1

你的javascript有什麼好處,而不僅僅是'href =「forgotten.php」'? – 2012-01-07 15:48:02

+0

我同意tandu,你沒有在JS中做任何事情,除了按照它的意圖使用,爲什麼要涉及JS? – dougajmcdonald 2012-01-07 15:51:03

回答

6

當然,通過設計您的標記開始,這樣它的工作原理,即使用戶已禁用JavaScript:

<a class="forgotten" href="/forgotten.php">Forgot your password?</a> 

,然後你可以使用不引人注目的javascript:

$(function() { 
    $('.forgotten').click(function(evt) { 
     evt.preventDefault(); 
     window.location.href = "forgotten.php"; 
    }); 
}); 

很明顯,你可能想在這個javascript .click()處理程序中做一些更花哨的處理,而不是簡單地重定向到forgotten.php,這是一個禁用JavaScript的錨點已經做了什麼。你可以做一些漸進式的改進。就像一個AJAX調用某些動畫或其他東西。

現在,如果用戶禁用了javascript,他將被簡單地重定向到forgotten.php。如果他不這樣做,那麼把你的想象力付諸行動。

+2

你應該在click事件上使用'.preventDefault()'而不是'return false'。 – 2012-01-07 15:49:13

+0

@tandu,好點,回答更新。 – 2012-01-07 15:51:21

+0

優秀的建議,它的作品太棒了!點擊事件是爲了滿足jquery地址模塊,所以沒有什麼真正的幻想繼續。 – Paul 2012-01-07 15:56:49

0

使用#作爲href是不好的做法,而不是如何做事情。

如果您只是將#替換爲forgotten.php,您的代碼將完全按照您的要求進行操作。 JS將首先被觸發。

0

如果你想處理的JavaScript可能會被禁用的情況下,我會採取相反的做法。首先格式化HTML,就像Javascript不在那裏一樣。然後使用javascript來格式化它,因爲在文檔加載後您會喜歡。