首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery中的多并发事件处理

jQuery中的多并发事件处理
EN

Stack Overflow用户
提问于 2011-01-19 19:30:43
回答 1查看 1.7K关注 0票数 3

我正在尝试使用jQuery处理多个并发事件,但在触发事件时遇到了精细管理问题。

代码语言:javascript
复制
<html>
  <head>
  <title></title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
  </head>
  <body>

    <div id="edit" contenteditable="true">Edit some content</div>
    <button id="button" type="button">Click the button</button>

    <script type="text/javascript">
      $(document).ready(function () {
        $('#button').click(function (e) {
          alert('I have been clicked.');
        });
        $('#edit').blur(function (e) {
          alert('I have been edited.')
        });
      });
    </script>

  </body>
</html>

我希望实现的是由用户编辑DIV的内容,并在单击按钮时,在DIV上的模糊事件之前引发该事件。可能的情况是,从未单击过按钮,在这种情况下,blur事件可能会自动激发。正如您使用上面的代码所看到的,一旦编辑了内容并单击了按钮,就只触发了blur事件。

有人能告诉我如何才能实现所需的功能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-19 19:43:02

一个- admittingly非常老套的方式看起来像这样:

代码语言:javascript
复制
$(document).ready(function() {
    var buttonClicked = false;
    $('#button').bind('click', function(e) {
        buttonClicked = true;
        alert('I have been clicked.');
    });
    $('#edit').bind('blur', function(e) {
        setTimeout(function() {
            if (!buttonClicked) alert('I have been edited.');
            buttonClicked = false;
        }, 100);

    });
});

不过,此示例并未阻止事件的触发。它只处理回调。

在这里它是有效的:http://jsfiddle.net/Dp6b5/1/,你可以调整超时延迟,在这种情况下也不一定要使用bind

这是一个有趣的问题,但是我没有看到任何“适当”的方法来处理这个atm.,因为blur事件实际上是在click之前触发的。也许其他人有更好的主意我看不到自动取款机..

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

https://stackoverflow.com/questions/4734691

复制
相关文章

相似问题

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