2011-03-02 74 views
4

我有這個JavaScript函數:jQuery - 如何使用e.preventDefault();在JavaScript函數

function putVote(trackid, vote) { 
} 

,我調用這個函數trought:

<a href="#" onClick="putVote('data1', 'data2')">Link</a> 

我想在putVote()使用e.preventDefault();,但我想我錯了從某種角度。我該怎麼做?

乾杯

+0

你還沒有告訴我們爲什麼* *您想使用的功能......不過,我可以說,你可能會更好使用jQuery綁定事件處理程序,而不是硬編碼成一個屬性。 – Pointy 2011-03-02 14:06:58

+0

你可以通過事件來'putVote',然後調用'的preventDefault()'那裏。 – pimvdb 2011-03-02 14:07:18

回答

5

做最簡單的事情將是return false 從處理程序中的功能 return false只會在putVote工作,如果處理程序都有return putVote('data1', 'data2))。

但作爲尖尖的說,一個更好的方法是從附加JavaScript的事件處理程序,最容易使用的庫/框架,如jQuery或原型實現。

+0

是的,我知道,但我想使用的preventDefault :) – markzzz 2011-03-02 14:09:09

+0

@markzzz爲什麼你要使用的preventDefault? – Skilldrick 2011-03-02 14:10:22

+0

爲什麼不! :)好的,我會使用返回false。 – markzzz 2011-03-02 14:16:59

5

最簡單的方法:

<a href="#" onClick="putVote('data1', 'data2'); return false;">Link</a> 
+0

舊的答案,但我需要的確切的東西。謝謝! – Yuschick 2014-09-13 15:14:40

5

如果你正在使用jQuery。

JS:

$("#link").click(function(evt) { 
    evt.preventDefault(); 
    putVote('data1', 'data2'); 
}); 

HTML:

<a href="#" id="link">Link</a> 

如果你正在使用jQuery的最新版本,HTML5的DOCTYPE。

JS:

$("#link").click(function(evt) { 
    evt.preventDefault(); 
    var $self = $(this); 
    putVote($self.data("one"), $self.data("two")); 
}); 

HTML:

<a href="#" id="link" data-one="data1" data-two="data2">Link</a> 
1

在你的情況下,使用jQuery風格的結合,關鍵是要能夠通過特定的元素參數的處理程序(「data1」,「data2」)。 「現代」的方式來做到這將是這樣的:

<a href="#" class='data-clickable' data-click-params='["data1", "data2"]'>Link</a> 

然後,在「準備」處理(或其他合適的地方),你會綁定您的處理程序:

$('a.data-clickable').click(function(e) { 
    var elementData = $(this).data('click-params'); 
    // 
    // ... handle the click ... 
    // 
    e.preventDefault(); 
}); 

的「elementData」變量最終(在這種情況下,無論如何)都是一個有兩個值的數組,「data1」和「data2」。你可以給JSON-符號值「數據-foo」的屬性,當你使用jQuery的獲取屬性「數據()」方法,它會自動爲你解碼JSON。