2010-04-15 75 views
2

代碼。點擊運行不上。點擊運行時,我有這樣的:代碼是不是超鏈接

$(".cancel").click(function() { 
    alert("got here"); 
    $(this).closest(":dialog").dialog("close");        
}); 

<a class="cancel" href=""><img src="images/cancelButton.gif" border="0" /></a> 

它一定是愚蠢的東西,但我無法看到它。

回答

7

我假設你在$(document).ready(function() { ... });包裝代碼?

$(".cancel").click(function() { 
    alert("got here"); 
    $(this).closest(":dialog").dialog("close"); 
    return false;        
}); 
+5

重要的是要注意這裏的「爲什麼」:沒有「文檔就緒」條件,目標鏈接在DOM中還不存在,不能由jQuery修改。 – 2010-04-15 14:26:27

+1

是的,好點。我認爲人們會忘記JavaScript一讀完就運行,ready()命令實際上將其內容附加到documentIsNowFinishedLoadingIntoBrowserMemory事件中。 :-) – Armstrongest 2010-04-15 15:41:13

0

如果href=""而不是href="#"並不意味着它實際上重新加載點擊頁面?

+0

啊,以及如果我沒有在那裏放一個href我沒有可點擊性 – PositiveGuy 2010-04-15 14:27:08

1

附加在點擊事件結束返回false沒有onclick事件)將被忽略。

所以在這種情況下返回false將阻止瀏覽器跳轉到鏈接錨點。

編輯

公平的評論如下 - 看了看jquery.com和它說

返回false從處理器就相當於在調用這兩個.preventDefault()和.stopPropagation()事件對象。

+0

其漂亮不乾淨的使用返回false!點擊(功能(o){alert(「got here」);) $(this).closest(「:dialog」)。dialog(「close」); o .preventDefault(); }); 做一個$(document).ready(function(){then it should work}) – meo 2010-04-15 14:20:36

+0

這是爲什麼?我補充說,但對話沒有結束。 – PositiveGuy 2010-04-15 14:21:08

+0

它爲什麼不乾淨?它執行與preventDefault相同的操作,代碼更少。 – mkoryak 2010-04-15 14:36:40

0

任何你把一個onclick事件用javascript調用,如果添加返回false,那麼默認的行爲(會發生什麼:

$(document).ready(function() { 
    $('.cancel').click(function(e) { 
    alert('here!'); 
    e.preventDefault(); // prevents click from following through 
    }); 
}); 
+2

使用preventDefault()不返回false! – meo 2010-04-15 14:23:03

+0

其不是。因爲你的功能總是會返回false。如果您使用事件偵聽器(例如錯誤返回),則可能會出現問題。 – meo 2010-04-15 14:38:03

+0

是的,我明白你現在的意思,從你對上述答案的評論'如果他們都返回錯誤,它會有問題' – 2010-04-15 15:10:14

0

有幾個人說加回歸虛假;到您的點擊處理程序。而應該使用preventDefault方法對事件類,像這樣:

$(".cancel").click(function(event) { 
    event.preventDefault(); 
    alert("got here"); 
    $(this).closest(":dialog").dialog("close"); 
}); 

確保您在事件處理函數傳遞。這是首選的jQuery方式。我也總是把preventDefault()作爲處理器方法中的第一件事,但我認爲這沒有什麼不同。

相關問題