首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >等待单击事件在Javascript中完成

等待单击事件在Javascript中完成
EN

Stack Overflow用户
提问于 2012-12-25 03:41:52
回答 4查看 11.4K关注 0票数 3

我的图像中有一个onClick事件,它会导致在jQuery选项卡中添加新的选项卡。它旁边的事件将向此新选项卡添加内容。

代码语言:javascript
运行
AI代码解释
复制
$('#Image').click();
$('#controladdedbyclickabove').append( message);

我看到的问题是,单击事件不会等待操作完成,它将继续执行下一条语句。由于这一点,我看不到内容被添加到点击将生成的新控件中。如何使单击事件在移动到下一条语句之前等待操作完成?

我不需要依赖于触发点击,因为#image上的onClick操作有我可以提取为字符串的所有参数,但是我不确定如何执行它。

当发生onClick事件时,将调用此方法:

代码语言:javascript
运行
AI代码解释
复制
function addTab(title, uri, userid) {
    var newTab = $("#tabs").tabs("add", uri, title);
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-25 04:01:12

您可以使用回调函数:

代码语言:javascript
运行
AI代码解释
复制
 if($('#Image')) {
  $('#Image').click(function() {
        $('#controladdedbyclickabove').append( message);
  });
}else {
  console.log('image object not there');
}
票数 5
EN

Stack Overflow用户

发布于 2012-12-25 03:51:20

您不能等待事件被处理,因为只有在您退出函数并将控制权返回给浏览器之前,它才会被处理。

要在处理事件后运行代码,您需要在退出函数后启动它:

代码语言:javascript
运行
AI代码解释
复制
$('#Image').click();
window.setTimeout(function(){
  $('#controladdedbyclickabove').append( message);
}, 0);
票数 4
EN

Stack Overflow用户

发布于 2012-12-25 06:17:21

有很多方法可以让that.you在点击完成后执行一些东西。

1:为什么不这样编写代码呢?

代码语言:javascript
运行
AI代码解释
复制
function addTab(title, uri, userid) {
   var newTab = $("#tabs").tabs("add", uri, title);
   $('#controladdedbyclickabove').append( message);
}

2:你也可以像这样定义一个函数

代码语言:javascript
运行
AI代码解释
复制
function addTabCallback () {
  $('#controladdedbyclickabove').append( message);
}

function addTab(title, uri, userid) {
   var newTab = $("#tabs").tabs("add", uri, title);
   addTabCallback();
}

3:你可以使用观察者模式

代码语言:javascript
运行
AI代码解释
复制
function addTab(title, uri, userid) {
   var newTab = $("#tabs").tabs("add", uri, title);
   var observer = addTab.observers.shift();
   while (observer) {
      observer();
      observer = addTab.observers.shift();
   }
}
addTab.observers = [];

当你触发点击时,应该做一些小的改变

代码语言:javascript
运行
AI代码解释
复制
addTab.observers.push(function () {
   // codes here will be executed when the click finished
   $('#controladdedbyclickabove').append( message);
});

$('#Image').click();

这是一个带有观察者模式的示例代码,实际上,它应该做一些观察者类型检查,etc.^_^。

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

https://stackoverflow.com/questions/14027495

复制
相关文章

相似问题

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