Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >单击事件处理程序中的“click ()”

单击事件处理程序中的“click ()”
EN

Stack Overflow用户
提问于 2017-05-04 22:51:44
回答 2查看 123关注 0票数 2

测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var btn = document.querySelector('button')
btn.addEventListener('click', log)

function log(event) {
  var p = document.createElement('p')
  p.textContent = event.type
  document.body.appendChild(p)
  fire()
}

function fire() {
  btn.click()
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<button type="button">Click me</button>

我想会抛出一个例外。单击事件处理程序中的click()发出一个单击事件,单击事件处理程序再次调用click(),后者再次发出一个单击事件,以此类推。但是结果和我想的不一样,它只输出两个‘点击’(IE输出一个‘点击’)。

现在,更改fire函数,创建一个单击事件并分派它,结果与预期的一样。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  var btn = document.querySelector('button')
  btn.addEventListener('click', log)

  function log(event) {
    var p = document.createElement('p')
    p.textContent = event.type
    document.body.appendChild(p)
    fire()
  }

  function fire() {
    var event = new MouseEvent('click')
    btn.dispatchEvent(event)
  }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<button type="button">Click me</button>

我的问题是,为什么click()的行为会有所不同?

注意到:没有使用jQuery,与jQuery方法.click()没有任何关系。

EN

回答 2

Stack Overflow用户

发布于 2017-05-04 23:21:46

dispatchEvent将事件同步地发送到目标,因此当您使用dispatchEvent时,事件处理程序帧会在堆栈上累积,并最终溢出。因此,打印无限click并填充堆栈(控制台异常)。请参阅文档

但是,当您使用.click()时,javascript中的一个受控事件。它只模拟一个事件,即click,而不是连续的同步调用。有关更多帮助,请参见文档

票数 1
EN

Stack Overflow用户

发布于 2017-05-04 22:57:55

您的.click()执行与它关联的操作(如下面的链接),bud不会触发click事件>没有再次调用log函数,因此不会执行重复的单击事件。

在第二个版本中,您经常触发click事件,因此您的log函数被无限次执行。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43798336

复制
相关文章
jQuery 双击事件(dblclick)时,不触发单击事件(click)
在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click)。 先看一下点击事件的执行顺序:
飞奔去旅行
2019/06/13
5.3K0
ios下Safari无法触发click事件的处理
<!DOCTYPE html> <html> <head> <title>122</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no"> </head> <body> <div> adfafasdfasdfasdfasfdasdf<br/> adfafasdfasdfasdfasfdasdf<br/
用户7657330
2020/08/14
1.6K0
iview中 on-row-click 事件[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/147151.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/01
1.4K0
Android Button 单击事件
方法一:在XML文件中指定 单击事件函数 <Button             android:id="@+id/button1"             android:layout_width="120dip"             android:layout_height="wrap_content"             android:layout_alignParentLeft="true"             android:layout_below="@+id/textView1
磊哥
2018/05/08
1.7K0
双击事件与单击事件的那些事
合情合理,双击事件也是两次点击事件,所以同时会触发单击事件click和双击事件dblclick。但是需求是单击和双击不同的处理,所以双击的时候不应该触发单击事件。
赤蓝紫
2023/03/16
3.8K0
双击事件与单击事件的那些事
weex-08-单击事件
本节任务 学会组件添加单击事件 标准格式 <text v-on:click="方法名称">点我啊</text> 省略格式 <text @click="方法名称">点我啊</text> 下面我们创建
酷走天涯
2018/09/14
1.7K0
weex-08-单击事件
jquery 绑定click事件
有时候需要获得匹配元素相对于其同胞元素的索引位置,此时可以用index()方法获取
Devops海洋的渔夫
2019/05/30
4.5K0
Layui前端框架中的Button添加Click事件
  button点击事件有一个type属性,默认type是submit,有时候使用默认会出现页面自动刷新问题。
全栈测试开发日记
2023/02/02
5.7K0
jQuery点击click()事件
<p>这是一个段落。</p> <button onclick="active()">切换</button> <script> $(document).ready(function(){ $("button").click(function(){ $("p").slideToggle(); }); function active(){ $("p").slideToggle(); } }); </script>
明知山
2020/09/03
9.9K0
VC中CTreeContrl实现响应单击或双击事件
首先需要重写CtreeContrl,然后在.h中添加 afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);//双击事件 afx_msg void OnClkTree(NMHDR* pNMHDR, LRESULT* pResult);//单击事件 .h文件 #pragma once ///////////////////////////////////////////////////////////////////////////// //
acoolgiser
2019/01/17
1.8K0
事件处理程序
IE实现了与DOM中类似的两个方法:attachEvent()和detachEvent()。
RiemannHypothesis
2022/10/31
6580
浅谈JavaScript的事件(事件处理程序)
  事件就是用户或者浏览器自身执行的某种动作。诸如click、load和mouseover,都是事件的名字。而响应某个事件的函数就叫事件处理程序。事件处理程序的名字以“on”开头,比如click事件的事件处理程序是onclick。为事件指定事件处理程序的方式有多种方式。 HTML事件处理程序 元素支持的事件,都可以使用与相应事件处理程序同名的HTML特性来指定。这个特性的值能支持一定的JavaScript代码。例如,在单击按钮的时候执行一些JavaScript代码。 <div id="aa" onclic
水击三千
2018/02/27
1.5K0
对事件委托绑定click的事件的解绑
大家都知道解绑事件的jquery写法,很简单: $("xxx").unbind("click"); 然后对于事件委托式的事件绑定,亲测,这种解绑方法是无效的, $(".sideNav>ul").on("click", function (e) { alert("aaa"+$(e.tagert).index()); } 即使做判断让一部分带有某个class的li标签的ul解绑click,依然无效,事件委托会直接跳过判断,执行冒泡 解决办法: 给不想绑定点击事件的li元素阻止冒泡: $(".si
蓓蕾心晴
2018/04/12
2.6K0
js中click事件导致当前页面重新加载
本意是计划用户不输入任何信息时,直接返回,但是实际结果却是没有任何提示而页面却无故重新加载,导致这个问题的原因是上面标红部分,上面标红部分的作用类似于return true,这句话就会导致当前页面重新加载,下面是正确的代码:
johnhuster的分享
2022/03/29
7.4K0
HarmonyOS实战—实现单击事件流程
1. 什么是事件? 事件就是可以被识别的操作 。就是可以被文本、按钮、图片等组件识别的操作。 常见的事件有:单击、双击、长按、还有触摸事件 。 可以给文本、按钮等添加不同的事件。比如添加了单击事件之后
兮动人
2021/08/20
1.4K0
JavaScript事件处理程序
事件就是用户或者浏览器执行的某种操作。我们常用的点击,滚动视口,鼠标滑动都是事件,为响应事件而调用的函数被称为事件处理程序,在js中事件处理程序的名字以 on 开头。
大熊G
2022/11/14
5300
JavaScript 技巧篇-js增加延迟时间解决单击双击事件冲突,双击事件触发单击事件
js 的单双击事件同时存在会有一个问题:双击事件会同时触发单击事件,两个事件存在冲突。 我们加一个延迟时间就能很好的解决这个问题。
小蓝枣
2020/09/23
6.1K0
点击加载更多

相似问题

当我单击QT中的行时,如何分配click事件处理程序?

10

单击同时调用click和LinkClicked事件处理程序

24

绑定单击事件处理程序,.bind()和.click()哪个更好?

10

"click“事件处理程序未触发

30

jQuery .click方法是否触发.click事件处理程序?

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

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