2016-12-13 10 views
0

私は、すべての処理が完了した後にページに配置されるプレーンJavaScriptでいくつかのDOMオブジェクトを作成しています。動的JS-DOMオブジェクトにjQueryを追加する

ここで、jQueryを使用していくつかの異なる機能を追加したいと思います。そして、作成の過程でそれを追加します。それは(任意のjQueryのなしで、昔ながらの)今すぐに見えたよう

のjQueryを使用して
var mainput = document.createElement("textarea"); 
mainput.setAttribute("ID", "masseinfo_" + dsatz.ID); 
mainput.setAttribute("onkeyup", "checkAndSendMaAjax(" + dsatz.ID + ", '" + masseinfoup + "', '" + dsatz.Typ + "', this.value)"); 

から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()関数第2引数は文字列(セレクタ)であり、DOM要素ではありません。セレクタ"#masseinfo_" + dsatz.IDまたはmainput.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

を使用するコードを変更し 私が得るすべては 'TypeError例外である:(新しい文字列( "masseinfo_106"))のプロパティに割り当てることはできません。ないobject' – Qohelet

+0

問題の機能的な例を作成できますか?そのためにhttps://jsfiddle.net/を使用することができます – pedrofsantos

+0

まあ、問題は解決されています。しかし、うまくいけない: 'dsatzjqcode.push(" $(document).on( 'keyup'、 '#masseinfo_ "+ dsatz.ID +"'、function(){debounce(checkAndSendMaAjax( "+ dsatz.ID +"、 '+ dsatz.Typ + "'、this.value)、" + debouncetime + ");});"); ' 私は配列にすべてをスローし、ページがロードされた後に' eval'を使います – Qohelet

関連する問題