jQuery - 如何使用e.preventDefault();在JavaScript函数中

时间:2011-03-02 14:05:31

标签: javascript jquery

我有这个JavaScript函数:

function putVote(trackid, vote) {
}

我将此功能称为:

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

我想在e.preventDefault();上使用putVote(),但我认为我在某些方面错了。我该怎么办?

干杯

4 个答案:

答案 0 :(得分:5)

最简单的事情是来自处理程序中的函数的return false return false如果处理程序具有{putVote,则只能在return putVote('data1', 'data2)中工作1}})。

但正如Pointy所说,更好的技术是从JavaScript附加事件处理程序,最容易通过使用jQuery或Prototype等库/框架来实现。

答案 1 :(得分:5)

最简单的方法:

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

答案 2 :(得分: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>

答案 3 :(得分:1)

在您的情况下,使用jQuery样式绑定的技巧是您希望能够将特定于元素的参数传递给处理程序(“data1”,“data2”)。这样做的“现代”方式是:

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

然后,在“ready”处理程序(或其他适当的位置)中,绑定处理程序:

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

“elementData”变量将最终(在这种情况下,无论如何)是一个包含两个值的数组,“data1”和“data2”。您可以将JSON符号值赋予“data-foo”属性,当您使用jQuery“.data()”方法获取属性时,它将自动为您解码JSON。