在jquery中使用.click()和使用onclick调用函数

时间:2015-04-13 22:06:25

标签: javascript jquery html

我对jQuery很新,但我想知道按钮做什么时的最佳做法。

我应该使用.click()

HTML

<button id="submit" class="btn btn-default">Submit</button>

JS

$('#submit').click(function(){
    //DO SOMETHING
});

或致电功能

HTML

<button class="btn btn-default" onclick="Submit();">Submit</button>

JS

function Submit() {
    //DO SOMETHING
}

我的问题是,这两种方法的行为方式是否相同?如果没有,那么一方面有什么优势呢。

*我试过并且似乎以同样的方式工作但是我想确保jQuery的新手。

5 个答案:

答案 0 :(得分:2)

它们在内部的行为方式不同。

使用onClick将click事件直接绑定到一个性能稍好的函数。

JQuerys .click()添加了一个事件监听器,它具有几个优点(除了更具可读性)。

  • 它允许为事件添加多个处理程序。这对于需要运行良好的DHTML库或Mozilla扩展特别有用,即使使用了其他库/扩展。
  • 当听众被激活时(捕捉与冒泡),它可以让你对相位进行更精细的控制。
  • 它适用于任何DOM元素,而不仅仅是HTML元素。

有关详细信息,请参阅此答案:jQuery.click() vs onClick

答案 1 :(得分:1)

为了可维护性和可读性,您应该将HTML和JavaScript分开。 onclick="Submit();"的问题是JavaScript代码段Submit()嵌入在HTML属性中。从概念上讲,这类似于另一种应该避免的技术,即内联样式,其中混合了HTML和CSS。

实施语言分离可以使将来更容易进行更改。举个例子,我们假设您从这开始:

$('#submit').click(function(){
    //DO SOMETHING
});

它将功能附加到表单按钮提交。

但是,在路上,您意识到按下输入/返回文本输入也将提交HTML表单。要解决这个问题,您需要做的就是更改一行JavaScript:

$('#myform').on("submit", function(){
    //DO SOMETHING
});

答案 2 :(得分:0)

以下是我的两个首选方案。

在jQuery中使用click()应该与onClick做同样的事情(即使它们在技术上有所不同),所以我认为没有理由选择onClick而不是click()。另一件事是,如果您构建Chrome扩展程序onClick是不允许的。

示例:

$(element).click(function(){
   ...
});

您的其他选项是使用on()功能。与监视特定元素click()的{​​{1}}不同,它会监视事件的所有内容(在您定义的上下文中)。如果您具有相同类的动态元素,这将非常有用。

on()

这两个功能都很有用,具体取决于具体情况。回答您的原始问题:不,我认为没有理由使用$(element).on('click', function(){ ... }); 而不是onclick

希望这不是太偏离主题,但是当我开始时,我知道这些信息。

答案 3 :(得分:0)

这两种方法基本上做同样的事情。但是,有一个明显的区别。 onclick属性只能用于绑定一个事件,jQuery click事件可以在同一个元素上多次绑定。

除此之外,通常更容易维护标记与JavaScript代码分离的代码。通过使用onclick属性,您可以将一些JavaScript代码与标记混合在一起。

此外,使用jQuery绑定事件意味着您可以一次绑定多个元素上的事件,而不是在每个元素上都有一个属性。

答案 4 :(得分:-1)

.click(function(){...});要求浏览器在执行该功能之前加载jquery,但后者即function Submit(){...}更直接,与jquery方法相比,初始网站加载时间更少。但在前端用户眼中,这几乎完全相同。