簡體   English   中英

將事件偵聽器添加到通過AJAX添加到DOM的對象中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM