我有以下代码,它监听a.core-overlay
上的点击,然后运行overlay()函数,它是jQueryTools的一部分。
单击链接后,以下工作正常,只需单击一次即可运行该功能。
$("a.core-overlay").overlay({
target:"div.global-overlay",
mask: '#3D3D3D',
api: true,
onBeforeLoad: function() {
var toDoID = this.getTrigger().attr("id");
var toDo = toDoID.split('-');
var objectAction = toDo[0];
var objectType = toDo[1];
var objectID = toDo[2];
$('div.overlay-inner').load('/includes/functions/overlay-controls.php', {action: objectAction, type: objectType, object: objectID });
}
});
});
当我将其放入on click
监听器时,在触发叠加功能之前需要两次点击。
$(document).on('click', 'a.core-overlay', function(event) {
$(this).overlay({
target:"div.global-overlay",
mask: '#3D3D3D',
api: true,
onBeforeLoad: function() {
var toDoID = this.getTrigger().attr("id");
var toDo = toDoID.split('-');
var objectAction = toDo[0];
var objectType = toDo[1];
var objectID = toDo[2];
$('div.overlay-inner').load('/includes/functions/overlay-controls.php', {action: objectAction, type: objectType, object: objectID });
}
});
});
我需要它作为实时事件触发,因为我使用ajax将行插入到表中,但是当单击其中一个链接时,它根本不会触发第一段代码,而是触发器用第二次点击两次后。有任何想法吗?我尝试了很多不同的东西而没有任何运气。
答案 0 :(得分:1)
尝试将点击处理程序中的重叠代码更改为:
$(this).overlay({
target:"div.global-overlay",
mask: '#3D3D3D',
api: true,
load: true,
onBeforeLoad: function() {
var toDoID = this.getTrigger().attr("id");
var toDo = toDoID.split('-');
var objectAction = toDo[0];
var objectType = toDo[1];
var objectID = toDo[2];
$('div.overlay-inner').load('/includes/functions/overlay-controls.php', {action: objectAction, type: objectType, object: objectID });
}
});
添加load: true
以立即打开叠加层,而不是等待点击。