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:警告並給我一個警告。內容加載完美的覆蓋,所以再次一切正常。
我看不出有什麼區別,爲什麼它不會隱藏,即使我得到了很好的迴應並且內容被替換了。
任何建議如何我可以調試?
一個不能正常工作的元素有什麼不同? –
它只是一個不同的內容。但正如強調它加載罰款。 – Lee
觸發ajax請求的元素是否也作爲ajax調用的結果被替換?如果是的話那麼問題可能就在那裏。 jquery-rails存在一個問題,那就是在DOM中不再發布元素的事件,我無法找到一些基本的使用Google的鏈接。 – rubish