對於Jquery的就緒事件塊,文檔說:我是否錯誤地使用了Jquery.ready()?
的。就緒()方法一般是與屬性不兼容。如果必須使用加載,請不要使用.ready()或使用jQuery的.load()方法將加載事件處理程序附加到窗口或更具體的項目(如圖像)。
這
$(function() {
// Handler for .ready() called.
});
在我爲Rails的CoffeeScript文件,我傾向於遵循這個模式:
$ ->
$("body.controller_name").ready ->
$(".button_group").change (evt) ->
alert("do something")
,如果我需要委派,這將是一個元素的結合創建並不在最初的html中,我傾向於這樣做。
$ ->
$("body.controller_name").ready ->
$('.button_group').change (evt) ->
alert("do something")
$(document).on 'change', '.button_group', (event) ->
alert("do something")
當檢查出turbolinks.jquery寶石,我遇到了這樣一個字條:
/* BAD: don't bind 'document' events while inside $()! */
$(function() {
$(document).on('click', 'button', function() { ... })
});
所以這讓我想知道,我已開始就錯了做什麼呢? 我應該避免在ready塊中使用$(document).on()
嗎? 如果是這樣,除turbolinks.jquery可能的衝突之外是有原因爲什麼這是錯誤的?
那麼什麼是正確的模式?我熟悉等待資產通過使用加載塊而不是就緒塊進行加載,但我不確定我是否知道我一直在做錯的事情。
如果您在頭部添加腳本以等待DOM加載,則需要document.ready。您可以簡單地在結束標記之前加載正文中的所有內容。 – elclanrs
我絕對不這樣做。我通常在Rails或類似的環境中進行編程,所以我使用了一個資產管道,其中包括我的後編譯後的coffeescript文件幷包含在頭文件中。在本練習的上下文中,我具體詢問在jquery.ready事件中包含'$(document).on('event','selector',function(){...})的問題是什麼?塊? –
剛剛檢查了TurboLinks文檔,不確定爲什麼它很重要,是否給出了任何問題?我沒有聽說過這種不好的做法,但也許TurboLink可能會不止一次地觸發準備好的事件...... – elclanrs