点击jQuery需要两次点击才能触发功能

时间:2014-01-10 10:35:29

标签: javascript jquery ajax jquery-tools

我有以下代码,它监听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将行插入到表中,但是当单击其中一个链接时,它根本不会触发第一段代码,而是触发器用第二次点击两次后。有任何想法吗?我尝试了很多不同的东西而没有任何运气。

1 个答案:

答案 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以立即打开叠加层,而不是等待点击。