我的图像中有一个onClick事件,它会导致在jQuery选项卡中添加新的选项卡。它旁边的事件将向此新选项卡添加内容。
$('#Image').click();
$('#controladdedbyclickabove').append( message);
我看到的问题是,单击事件不会等待操作完成,它将继续执行下一条语句。由于这一点,我看不到内容被添加到点击将生成的新控件中。如何使单击事件在移动到下一条语句之前等待操作完成?
我不需要依赖于触发点击,因为#image上的onClick操作有我可以提取为字符串的所有参数,但是我不确定如何执行它。
当发生onClick事件时,将调用此方法:
function addTab(title, uri, userid) {
var newTab = $("#tabs").tabs("add", uri, title);
}
发布于 2012-12-25 04:01:12
您可以使用回调函数:
if($('#Image')) {
$('#Image').click(function() {
$('#controladdedbyclickabove').append( message);
});
}else {
console.log('image object not there');
}
发布于 2012-12-25 03:51:20
您不能等待事件被处理,因为只有在您退出函数并将控制权返回给浏览器之前,它才会被处理。
要在处理事件后运行代码,您需要在退出函数后启动它:
$('#Image').click();
window.setTimeout(function(){
$('#controladdedbyclickabove').append( message);
}, 0);
发布于 2012-12-25 06:17:21
有很多方法可以让that.you在点击完成后执行一些东西。
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();
这是一个带有观察者模式的示例代码,实际上,它应该做一些观察者类型检查,etc.^_^。
https://stackoverflow.com/questions/14027495
复制相似问题