我需要在頁面加載時填充多個.click()
函數,這取決於mysql數據庫中存儲了多少個圖像記錄。我可以遍歷for循環來創建更多的JavaScript?
到目前爲止,我有一個頁面,將很好地之間的照片與圖像按鈕
的<ul>
切換,但我不得不手工編寫與它涉及了jQuery。
有沒有一種方法可以根據數據庫中記錄的數量,使用正確數量的.click()
函數填充.js
文件。
我需要在頁面加載時填充多個.click()
函數,這取決於mysql數據庫中存儲了多少個圖像記錄。我可以遍歷for循環來創建更多的JavaScript?
到目前爲止,我有一個頁面,將很好地之間的照片與圖像按鈕
的<ul>
切換,但我不得不手工編寫與它涉及了jQuery。
有沒有一種方法可以根據數據庫中記錄的數量,使用正確數量的.click()
函數填充.js
文件。
您無需爲每個獨特元素編寫click()
。
相反,你可以選擇一個一堆有選擇的元素,如$('a.record')
,然後連鎖click()
到...
$('a.record').click(function() {
// Any `a` element with a class of `record` was clicked.
});
做這種方式是你加了一堆的缺點的事件監聽器,它將不會被觸發未來的元素。
正如其他人所說,使用on()
(如果使用的是較新的jQuery)或delegate()
(如果使用的是舊)事件代表團是最好,因爲它僅附加一個事件監聽器,將與後加入的未來元素的工作事件附加。
$(document).on('click', 'a.record', function() {
// Any `a` element with a class of `record` was clicked, now or in the future.
});
我用document
這裏,但你應該使用哪一個不會改變的最近的祖先,這可能是你所描述的ul
元素。
除了亞歷克斯的答案,如果你想設置元素的點擊事件還不存在或還沒有被添加到頁面上,你可以這樣做:
$(body).on('click','a.record',function(){
//any existing or future a element with class record will have this click function
});
而是加入每個元素都有一個單獨的onclick
處理程序,您應該使用event delegation並將一個事件處理程序附加到某個容器。所述事件句柄將捕獲所有的onclick
事件,因爲通過DOM向上冒泡。