将jQuery添加到动态JS-DOM对象

时间:2016-12-13 17:25:22

标签: javascript jquery dom javascript-events debouncing

我正在使用纯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);
    })));

哪个不会产生错误,但根本不做任何事情。 我做错了什么?

1 个答案:

答案 0 :(得分: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);
})));

React/Redux links list