一次后如何阻止事件发生

时间:2017-10-26 06:41:26

标签: javascript jquery

您能否告诉我为什么在按钮点击事件发生之前我无法控制div上的活动? 基本上我需要的是div点击后button只发生一个事件  我试图用布尔clickEvtHandler控制它,但它没有通过

var clickEvtHandler = false;
var i = 1;
$("button").on("click", function() {
  clickEvtHandler = true;
  if (clickEvtHandler) {
    $("div").on("click", function() {
      $(this).append(i++);
      clickEvtHandler = false;
    });
  }
});
div {
  height: 300px;
  width: 300px;
  background: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>
  Enable Event On Div
</button>
<div></div>

3 个答案:

答案 0 :(得分:4)

如果您只想使用一次事件,请转到

$( "#div" ).one( "click", function() {
  alert( "This will be displayed only once." );
});

以上代码将确保绑定到给定div的事件将执行一次。

答案 1 :(得分:0)

也许使用两个单独的处理程序:

>>> def printHello(greetings):
...     inside_func=2
... 
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'printHello',]
>>> dir(printHello)
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']

答案 2 :(得分:0)

var clickEvtHandler = false;
var i = 1;

$("button").on("click", function() {
    clickEvtHandler = true;
    if (clickEvtHandler) {
        $("div").on("click", function() {
            if (clickEvtHandler)
                $(this).append(i++);
                clickEvtHandler = false;
        });
    }
});