3

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

$('#Image').click();
$('#controladdedbyclickabove').append( message);

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

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

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

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

4 回答 4

5

你可以使用回调函数:

 if($('#Image')) {
  $('#Image').click(function() {
        $('#controladdedbyclickabove').append( message);
  });
}else {
  console.log('image object not there');
}
于 2012-12-25T04:01:11.690 回答
4

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

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

$('#Image').click();
window.setTimeout(function(){
  $('#controladdedbyclickabove').append( message);
}, 0);
于 2012-12-25T03:51:20.200 回答
2

有很多方法可以做到这一点。您想在单击完成后执行某些操作。

1:为什么不让你的代码像这样

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

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

function addTabCallback () {
  $('#controladdedbyclickabove').append( message);
}

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

3:可以使用观察者模式

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 = [];

触发点击时应该做一些改变

addTab.observers.push(function () {
   // codes here will be executed when the click finished
   $('#controladdedbyclickabove').append( message);
});

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

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

于 2012-12-25T06:17:20.830 回答
1

我最终将附加消息传递回 ajax 调用的服务器。因此,当单击事件调用时,控件返回时会添加一条消息。我无法让 javascript 回调按预期工作。

于 2012-12-25T19:33:32.213 回答