我正在使用纯JavaScript创建几个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似乎失败了,因为该对象尚未出现在页面上。
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,其中写了一些关于on而不是live的用法:
$(“。postitem”)。live(“click”,function(){...});
......现在......
$(document).on(“click”,“。posttitem”,function(){...});
所以我试过了:
$(document).on('keyup',mainput,(debounce(250, function (e) {
console.log('It works!');
checkAndSendMaAjax(" + dsatz.ID + ", '" + masseinfoup + "', '" + dsatz.Typ + "', this.value);
})));
哪个不会产生错误,但根本不做任何事情。 我做错了什么?
答案 0 :(得分:1)
$。on()函数第二个参数是字符串(选择器)而不是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);
})));