2014-01-10 258 views
0

我有以下代碼,它監聽點擊a.core-overlay,然後運行疊加()函數,它是jQueryTools的一部分。點擊jQuery時需要點擊兩次才能觸發函數

以下工作正常,單擊鏈接時,只需點擊一次即可運行該功能。

$("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

試着改變你的點擊處理程序中的代碼覆蓋到這一點:

$(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使覆蓋立即打開,而不是等待點擊。

+0

頂級帥哥!這解決了它,我知道它必須是小事。在過去的30分鐘裏,我一直在絞盡腦汁,你是一個拯救生命的人。 – Karl

相關問題