我有这个JavaScript函数:
function putVote(trackid, vote) {
}
我将此功能称为:
<a href="#" onClick="putVote('data1', 'data2')">Link</a>
我想在e.preventDefault();
上使用putVote()
,但我认为我在某些方面错了。我该怎么办?
干杯
答案 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。