[英]Add an event listener to an object that is added to the DOM via AJAX
我有一組通過Ajax調用添加到文檔的復選框
<input type='checkbox' checked class='import'>
<input type='checkbox' checked class='import'>
<input type='checkbox' checked class='import'>
<input type='checkbox' checked class='import'>
<input type='checkbox' checked class='import'>
我有一些JavaScript(使用原型)
function check_toggle(obj, e) {
if (e.shiftKey) {obj.checked=!obj.checked;}
else if (e.altKey) {obj.checked=true;}
else if (e.ctrlKey) {obj.checked=false;}
}
$$('.import').each(function(obj){
Event.observe(obj, "mouseover", function(e){alert('here');}.bind(this))
});
現在,如果在頁面加載時復選框位於頁面上,則mousover技巧很有用。
不幸的是,如果我嘗試通過AJAX將復選框添加到DOM之后以任何方式調用“ $$”方法,它們中的任何一個都無法獲取事件監聽器。
如此...有人知道如何強制原型重新讀取DOM的當前狀態嗎? (或您可能想到的任何其他解決方法)
我嘗試將$$放入函數中,並將其作為onSuccess回調的一部分進行調用,作為進行ajax調用后的單獨函數,並將整個$$函數作為實際AJAX值的一部分輸出。 一切都無濟於事。
非常感謝您的幫助。
實際上非常容易。
function ajax_load_keyset(obj) {
url = '/myurl.html';
params = 'id='+obj.value;
new Ajax.Updater( 'checks_go_here',
url, {
method:'post',
parameters:params,
evalScripts: true, // this line must be present
onSuccess: function(result){}
});
}
事實證明,我只需要向 ajax調用添加evalScripts:true ,然后將$$函數放在所有內容結尾的/myurl.html頁面上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.