2010-04-30 36 views
1

在頁面的js文件,裏面$(document).ready(function() {})的jQuery的onclick功能不能與軌link_to_remote

$(".school a").live("click", function (e){ 
    e.preventDefault(); 
    ....; 
    jsFunc(param1, param2, param3); 
}); 

現在用類學校有由軌道生成的標籤與:url:action:before link_to_remote股利射擊, :html

在點擊此鏈接時,它會完成與link_to_remote有關的所有操作,但不知何故,document.ready中的onclick事件並未附加到它。爲什麼會發生這種情況? jsFunc所做的一切都是異步發佈到網址,我想到在link_to_remote的:before中填充該發佈url會有效 - 但是有沒有更好的方法可以使用附加功能

+0

'回報FALSE'是好多了不僅僅是'preventDefault'。 IE上的'preventDefault'也會失敗。 – 2010-04-30 06:13:18

回答

0

我相信link_to_remote helper依賴於Prototype;如果你已經切換到jQuery,Rails的javascript helper如link_to_remote可能無法工作。

0

link_to_remote使用onclick屬性。顯然這些在處理任何綁定/實況事件之前被調用,所以您的preventDefaults發生得太晚了。

在我來說,我只是想避免「第二」點擊鏈接,所以我只是清零第一次點擊在「點擊」屬性:

/* not (yet) well tested */ 
function doubleClickhandler(event) { 
    var t = $(event.target); 

    if (t.data("clicked")) { 
    event.preventDefault(); 
    } else { 
    t.data("clicked", true); 
    if (t.attr("onclick")) { 
     /* forcefully remove onclick handler */ 
     t.attr("onclick", ""); 
    } 
    } 
} 

function setupdoubleClickHandlers() { 
    $("a.doubleclick").each(function() { 
    var el = $(this); 
    el.removeClass("doubleclick"); /* prevent multiple setups */ 
    el.bind("click", doubleClickhandler); 
    }); 
} 

jQuery(document).ready(function($) { 
    setupdoubleClickHandlers(); 
    $(document).bind('reveal.facebox updatedfacebox', function() { 
    setupdoubleClickHandlers(); 
    }); 
});