2012-03-26 46 views
1

我需要在頁面加載時填充多個.click()函數,這取決於mysql數據庫中存儲了多少個圖像記錄。我可以遍歷for循環來創建更多的JavaScript?

到目前爲止,我有一個頁面,將很好地之間的照片與圖像按鈕

<ul>切換,但我不得不手工編寫與它涉及了jQuery。

有沒有一種方法可以根據數據庫中記錄的數量,使用正確數量的.click()函數填充.js文件。

回答

-1

您無需爲每個獨特元素編寫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元素。

3

除了亞歷克斯的答案,如果你想設置元素的點擊事件還不存在或還沒有被添加到頁面上,你可以這樣做:

$(body).on('click','a.record',function(){ 
    //any existing or future a element with class record will have this click function 
}); 
1

而是加入每個元素都有一個單獨的onclick處理程序,您應該使用event delegation並將一個事件處理程序附加到某個容器。所述事件句柄將捕獲所有的onclick事件,因爲通過DOM向上冒泡。