首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只触发一次单击事件

只触发一次单击事件
EN

Stack Overflow用户
提问于 2019-11-11 15:25:05
回答 2查看 682关注 0票数 0

我只想在浏览器的屏幕宽度为800 at时才触发单击事件,但是根据下面的逻辑,当我到达800并停止调整屏幕大小时,单击事件就会不间断地被触发。我怎样才能解决这个问题。

html文件:

代码语言:javascript
复制
<!-- begin sidebar minify button -->
<a href="javascript:;" class="sidebar-minify-btn" data-click="sidebar-minify">
   <i class="fa fa-angle-left"></i>
</a>
<!-- end sidebar minify button -->

js文件:

代码语言:javascript
复制
window.onresize = function()
{
     const width = window.innerWidth;
     if(width === 800)
     {

        $('a[data-click="sidebar-minify"]').trigger('click');
        console.log('click event triggered');
     }
}
EN

回答 2

Stack Overflow用户

发布于 2019-11-11 16:09:47

一种可能的方法是在不再需要像这样使用resize时删除EventTarget.removeEventListener()侦听器:

代码语言:javascript
复制
function resizeListener() {
  if (window.innerWidth === 800) {
    window.removeEventListener('resize', resizeListener);
    $('a[data-click="sidebar-minify"]').trigger('click');
    console.log('click event triggered');
  }
}

window.addEventListener('resize', resizeListener);
票数 4
EN

Stack Overflow用户

发布于 2019-11-11 15:46:30

就像皮特在评论中说的,你有不同的选择。

您可以使用布尔值来跟踪事件是否已经触发:

代码语言:javascript
复制
var isResized = false;
window.onresize = function()
{
     const width = window.innerWidth;
     if(width === 800 && !isResized)
     {
        isResized = true;
        alert("test");
     }
}

您还可以使用one函数来单击a tag,该函数在第一次使用之后解除对单击的绑定:

代码语言:javascript
复制
window.onresize = function()
{
     const width = window.innerWidth;
     if(width === 800)
     {
        $('a[data-click="sidebar-minify"]').trigger('click');
        console.log('click event triggered');
     }
}

$('a[data-click="sidebar-minify"]').one("click", function(){
    alert("test");
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58804192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档