当我加载.jsp页面时,secondFunction()会自动运行(每当我加载页面时会弹出一个模态)。即使我使用了 callback()属性,要使secondFunction()仅在firstFunction()完成时运行,它每次加载页面时都会自动运行。我只希望它在我按下按钮时运行,并且当firstFunction()完成时。有什么想法吗?
HTML code:
<a class="open-buttonedModal icon-info-sign" onclick="firstFunction()"></a>
Jquery的:
function firstFunction(callback) {
$('td').click(function() {
var emp = $(this).prev().prev().prev().prev().prev().prev().prev().prev().prev().prev().text();
var url = "timesheet.jsp?ename=" + emp;
$(location).attr('href', url);
});
callback();
}
function secondFunction() {
$('#buttonedModal').modal('show');
}
firstFunction(function() {
secondFunction();
});
答案 0 :(得分:0)
仅.click()
函数绑定一个事件处理程序,不会等待它实际运行。您应该将callback()
放在事件处理程序的末尾:
function firstFunction(callback) {
$('td').click(function() {
// ... other clicky stuff
callback();
});
}
仅在页面加载后运行一次,并且在单击按钮后,使用单独的事件处理程序.one()
:
function firstFunction(callback) {
$('td').click(function() {
// ... other clicky stuff
}).one('click', function() {
callback(); // can also be used without the function() {} wrapper
});
}
此外,为了避免将来出现无法解密的错误消息,您可以在尝试运行之前检查callback
确实是一个函数:
if(typeof callback === 'function') {
callback();
} else {
console.log('callback is not a function'); // possibly throw an error, too?
}