onclick =“func()”或.click()?

时间:2009-10-25 03:24:34

标签: jquery

我想知道上面哪种方法是首选的,或者是使用$(elem).click()来处理简单事物的一般准则和< a onclick =“func(1,2,3,4);” >何时需要在单击元素时将参数传递给脚本?我一直在尝试只使用$(elem).click()来保持代码干净简单,但是当你必须传递多个参数时它会变得棘手并且函数调用onclick =“”似乎是一个更好的解决方案

6 个答案:

答案 0 :(得分:7)

jQuery背后的主要思想之一是不引人注目的javascript(即HTML和javascript是两种味道不一样的好味道)。使用jQuery对象和选择器来附加函数是他们希望你做的。

答案 1 :(得分:5)

$(elem).click(function() {
    func(1,2,3,4);
});

这看起来像你想要的,不是吗?

答案 2 :(得分:4)

如果可以在点击时确定参数,我建议 绑定方法:

$('a').click(function(){ someFunc(this.val, 2, 3, 4); })

我能想到的一个内联实例,就是你在一个循环中构建多个链接,其中第1,2,3或4个参数根据后端变量或其他内容而变化:

<% for( int i = 0; i < 4; i++) { %>
    <a onclick="someFunc(1,<%= i %>,3,4"></a>
<% } %>

就个人而言,我总是尝试在$(document).ready()回调中绑定事件。

希望这有帮助

答案 3 :(得分:3)

我更喜欢使用$(elem).click()来保持我的HTML javascript免费,我认为它更干净。

答案 4 :(得分:2)

我也会使用click(),如果你想要传递给函数的其他参数,将它们添加到任何对象的属性中,我通常会使用rel这样的:

<a href="#" class="link" rel="parameter1, parameter2, etc">Link</a>
在脚本中你可以这样做:

$('.link').click(function() {
 var parameters = $(this).attr('rel').split(',');
 // Do something
 return false;
})

答案 5 :(得分:0)

使用jQuery时可以将参数传递给函数:

$(".selector").click(function() { func(1,"2", someVar); });

我更喜欢总是使用jQuery来处理事件。我不喜欢在我的HTML中添加任何行为,即使使用onclick和相关事件也是如此。

此外,如果您使用$(".selector").click()以编程方式单击某些内容并且使用onclick和jQuery附加了处理程序,它将首先调用jQuery处理程序,然后使用该属性调用处理程序集。但是,如果你用鼠标点击,那就相反了。这可能是意料之外的,最终会让你头疼。