2012-12-18 216 views
1

我需要在加載頁面時觸發jQuery的.on()事件。我有一些動態生成的複選框,基於上一個屏幕上的用戶選擇。我有代碼,做我想要的,但我已經綁定到'身體'點擊事件,讓我測試它的作品。當頁面加載時觸發jQuery的.on()事件

我的是以下內容,只要頁面加載而不是點擊主體就需要觸發。你

$('body').on('click', function (e) { 
    $("input:checkbox").each(function() { 
     if ($(this).attr("disabled") == "disabled") { 
      $(this).parent().addClass('disabled'); 
     } 
    }); 
}); 

回答

0

兩種可能性:

1)只要把你的腳本標籤包含的代碼在頁面的最末端,剛剛閉幕</body>標記之前,並從事件處理程序中刪除:

<script> 
$("input:checkbox").each(function() { 
    if ($(this).attr("disabled") == "disabled") { 
     $(this).parent().addClass('disabled'); 
    } 
}); 
</script> 
</body> 

上述所有定義的複選框的HTML代碼將可在這一點上,引用:


2)或者,如果你有一些理由把script標籤的其他地方,你可以使用jQuery's ready event,該頁面後觸發準備就緒,但前onload(通常情況下):

jQuery(function($) { 
    $("input:checkbox").each(function() { 
     if ($(this).attr("disabled") == "disabled") { 
      $(this).parent().addClass('disabled'); 
     } 
    }); 
}); 
+0

嗨,這兩個都不適合我。我已經在文檔中做好了準備,但是由於輸入是使用jQuery動態創建的,所以DOM不會看到它們,除非我使用.on(),而我可以訪問但需要觸發事件(如點擊,焦點)。 – KDee

+1

@KDee:如果您要動態添加它們,請在添加它們之後運行相關的代碼。例如,一旦你創建了一個新的,並且假設你有一個名爲'newItem'的jQuery包裝器,它引用了包含複選框的元素:'if(newItem.find(「input:checkbox [disabled = disabled] 「)[0]){newItem.addClass(」disabled「); }'which says「如果'newItem'中有任何禁用的複選框,則將''disabled''類添加到'newItem'。 –

+0

我會接受你的答案,因爲它可以通過在點上分配類來幫助解決我的問題如果我發現任何東西,我會繼續探索併發佈一個解決方案 – KDee

1
jQuery(document).ready(function($) { 
    $("input:checkbox").each(function() { 
     if ($(this).attr("disabled") == "disabled") { 
      $(this).parent().addClass('disabled'); 
     } 
    }); 
}); 

document.ready處理函數使頁面完成加載時激活該函數。

+0

我確實已經在document.ready中使用了它,但由於控件是動態生成的,因此不起作用。使用.on允許我訪問這些控件,但我需要一個事件來觸發它。 – KDee

+0

jQuery(document).ready(function($){ //這裏是您的.on處理程序代碼 }); – Houssni

相關問題