有嵌套的点击处理程序是不是不好?

Is it bad to have nested click handlers?(有嵌套的点击处理程序是不是不好?)

本文介绍了有嵌套的点击处理程序是不是不好?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人曾经向我提到过这一点,但我从未找到任何支持这一说法的文档。在应用程序中嵌套点击处理程序是不是很糟糕?例如:

$("div").on("click", function(){
    //*Do things*
    $("p").on("click", function(){
        //*Do things*
    })
})

如果这是不好的做法,原因是什么,更好的解决方案是什么?

推荐答案

是的,通常很糟糕,除非这正是您想要的?

如果有人单击一个div两次,该段落的事件处理程序会附加两次,做两次"事情",尝试一下

$('div').on('click', function() {
  $('p').on('click', function() {
    alert('This is annoyning');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>click me a few times ?</div>
<br /><br /><br />
<p>... then click me</p>


更好的解决方案是不嵌套事件处理程序

var isClicked = false;

$('div').on('click', function() {
    isClicked = true;
});

$('p').on('click', function() {
    if (isClicked) // do stuff
});

(简化为说明概念,不使用全局变量,jQuery有data())

这篇关于有嵌套的点击处理程序是不是不好?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:有嵌套的点击处理程序是不是不好?

基础教程推荐