2012-05-08 61 views
0

我在一個頁面上有很多鏈接,通過遠程調用來更新頁面上的內容。一切都很完美,所以我決定爲有內容加載的元素添加一個疊加層,以便爲客戶提供一些視覺參考,以瞭解某些事情正在發生。link_to和remote => true + jquery ajax:成功

因此,在我想要顯示疊加層的每個鏈接上,我通過數據屬性添加了一個類,並在div中傳遞我想要的疊加層。這裏是一些示例代碼。

<div id="content">Old Content</div> 
<%= link_to "Update Content", some_path, :class => 'ajax_trigger', :remote => true, 'data-target' => 'content' %> 

好了,所以當點擊它運行並用respond_to代碼塊format.js,我更換內容,即加載數據,

$("#content").html("<%= escape_javascript(render(:partial => '/shared/content')) %>") 

就像我已經說過的所有的偉大工程。好吧,我有一個全球性的JS(咖啡腳本)來做覆蓋,即。

$(".ajax_trigger").live("ajax:beforeSend", (evt, data, status, xhr) -> 

    # Get target div to add overlay 
    target = $(this).data('target') 
    $t = $("#"+target) 

    # Update CSS for Overlay 
    $("#overlay").css 
     opacity: 0.7 
     top: $t.offset().top 
     left: $t.offset().left 
     width: $t.outerWidth() 
     height: $t.outerHeight() 

    # Update Image for Overlay 
    $("#img-load").css 
     top: ($t.height()/2) 
     left: ($t.width()/2) 

    # Show Overlay 
    $("#overlay").fadeIn() 

).live("ajax:success", (evt, data, status, xhr) -> 
    $("#overlay").fadeOut() 
).live "ajax:error", (evt, data, status, xhr) -> 
    alert "Failed!" 

這適用於頁面上的兩個項目,但對於一個它顯示重疊但不隱藏它。我當然沒有聽錯ajax:警告並給我一個警告。內容加載完美的覆蓋,所以再次一切正常。

我看不出有什麼區別,爲什麼它不會隱藏,即使我得到了很好的迴應並且內容被替換了。

任何建議如何我可以調試?

+0

一個不能正常工作的元素有什麼不同? –

+0

它只是一個不同的內容。但正如強調它加載罰款。 – Lee

+0

觸發ajax請求的元素是否也作爲ajax調用的結果被替換?如果是的話那麼問題可能就在那裏。 jquery-rails存在一個問題,那就是在DOM中不再發布元素的事件,我無法找到一些基本的使用Google的鏈接。 – rubish

回答

0

我不能說出你的問題只是從描述。您是否使用過JavaScript調試器,例如Firebug或Chrome Developer Tools中的調試器?找到你的腳本,設置一箇中斷點,點擊麻煩的鏈接,並逐步完成代碼。

相關問題