首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在jquery使用onclick调用函数时使用.click()

在jquery使用onclick调用函数时使用.click()
EN

Stack Overflow用户
提问于 2015-04-13 14:06:25
回答 5查看 3.7K关注 0票数 1

我对jQuery相当陌生,但我想知道,当按钮做一些事情时,最佳实践是什么。

我应该使用.click()吗?

代码语言:javascript
运行
AI代码解释
复制
<button id="submit" class="btn btn-default">Submit</button>

JS

代码语言:javascript
运行
AI代码解释
复制
$('#submit').click(function(){
    //DO SOMETHING
});

或者调用一个函数

代码语言:javascript
运行
AI代码解释
复制
<button class="btn btn-default" onclick="Submit();">Submit</button>

JS

代码语言:javascript
运行
AI代码解释
复制
function Submit() {
    //DO SOMETHING
}

我的问题是,这两种方法的行为方式是相同的吗?如果不是,的优点是什么?

*我试过了,似乎也是这样做的,但作为jQuery新手,我想确定一下。

EN

回答 5

Stack Overflow用户

发布于 2015-04-13 14:14:54

他们的行为(内部)不一样。

使用onClick可以直接将click事件绑定到性能更好的函数上。

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

  • 它允许为一个事件添加多个处理程序。这对于需要很好地工作的DHTML库或Mozilla扩展特别有用,即使使用了其他库/扩展。
  • 它为您提供了更细粒度的控制,当侦听器被激活时(捕获和冒泡)
  • 它适用于任何DOM元素,而不仅仅是HTML元素。

有关更深入的信息,请参见此答案:jQuery.click() vs onClick

票数 2
EN

Stack Overflow用户

发布于 2015-04-13 14:13:49

这是我最喜欢的两种选择。

在jQuery中使用jQuery应该做与onClick相同的事情(尽管它们在技术上的工作方式不同),所以我认为没有理由选择onClick而不是click()。另一件事是,如果你曾经构建一个Chrome扩展onClick是不允许的。

示例:

代码语言:javascript
运行
AI代码解释
复制
$(element).click(function(){
   ...
});

另一个选项是使用on()函数。与监视特定元素的click()不同,on()将监视事件的一切(在您定义的上下文中)。如果您的动态元素具有相同的类,这是非常有用的。

代码语言:javascript
运行
AI代码解释
复制
$(element).on('click', function(){
   ...
});

这两种功能都很有用,这取决于具体情况。要回答您最初的问题:不,我认为没有理由在click()上使用click()

希望这不是太离题,但我知道的信息,当我开始。

票数 1
EN

Stack Overflow用户

发布于 2015-04-13 14:18:42

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

实行语言分离可以使将来的更改变得更容易。举个例子,假设您从以下几个方面开始:

代码语言:javascript
运行
AI代码解释
复制
$('#submit').click(function(){
    //DO SOMETHING
});

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

但是,沿着这条路走下去,您会意识到,在文本输入上按回车/返回也会提交一个HTML表单。要处理这个问题,您所需要做的就是更改一行JavaScript:

代码语言:javascript
运行
AI代码解释
复制
$('#myform').on("submit", function(){
    //DO SOMETHING
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29615891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文