2016-12-13 51 views
0

我使用普通JavaScript創建了幾個DOM對象,並在完成所有事情後放入頁面。將jQuery添加到動態JS-DOM對象

現在我想通過使用jQuery添加一些不同的功能。並在創建過程中添加它。

,因爲它看起來現在(普通的舊,沒有任何的jQuery):

var mainput = document.createElement("textarea"); 
mainput.setAttribute("ID", "masseinfo_" + dsatz.ID); 
mainput.setAttribute("onkeyup", "checkAndSendMaAjax(" + dsatz.ID + ", '" + masseinfoup + "', '" + dsatz.Typ + "', this.value)"); 

使用jQuery與KEYUP似乎失敗,因爲對象是不是在頁面上呢。

mainput.keyup(debounce(250, function (e) { 
    console.log('It works!'); 
    checkAndSendMaAjax(" + dsatz.ID + ", '" + masseinfoup + "', '" + dsatz.Typ + "', this.value); 
})); 

錯誤keyup is not a function 使用on沒有太大的不同。

mainput.on('keyup',null,(debounce(250, function (e) { 
    console.log('It works!'); 
    checkAndSendMaAjax(" + dsatz.ID + ", '" + masseinfoup + "', '" + dsatz.Typ + "', this.value); 
}))); 

錯誤on is not a function

搜索了一下把我帶到that page其中寫了一些關於對使用,而不是活:

$(".postitem").live("click", function() {...});

... would now be...

$(document).on("click", ".postitem", function() {...});

所以,我想:

$(document).on('keyup',mainput,(debounce(250, function (e) { 
     console.log('It works!'); 
     checkAndSendMaAjax(" + dsatz.ID + ", '" + masseinfoup + "', '" + dsatz.Typ + "', this.value); 
    }))); 

這是不是不會產生錯誤,但根本不會做任何事情。 我在做什麼錯?

回答

1

$ .on()函數第二個參數是一個字符串(選擇器)而不是DOM元素。 更改代碼使用選擇"#masseinfo_" + dsatz.IDmainput.getAttribute("id")

$(document).on('keyup', mainput.getAttribute("id"),(debounce(250, function (e) { 
    console.log('It works!'); 
    checkAndSendMaAjax(" + dsatz.ID + ", '" + masseinfoup + "', '" + dsatz.Typ + "', this.value); 
}))); 

jQuery on function

+0

我得到的是'類型錯誤:不能分配到(新的String(「masseinfo_106」))的性質:不是object' – Qohelet

+0

你能爲你的問題創建一個功能性的例子嗎?你可以使用https://jsfiddle.net/那 – pedrofsantos

+0

那麼問題就解決了。不過很好: 'dsatzjqcode.push(「$(document).on('keyup','#masseinfo_」+ dsatz.ID +「',function(){debounce(checkAndSendMaAjax(」+ dsatz.ID +「, '「+ masseinfoup +」','「+ dsatz.Typ +」',this.value),「+ debouncetime +」);});「); ' 我把所有東西都放在一個數組中,並在頁面加載後使用'eval' – Qohelet