2011-03-02 39 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。

相关问题