2016-12-13 12 views
0

Я создаю несколько объектов DOM с простым JavaScript, которые помещаются на страницу после того, как все сделано.Добавить 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); 
    }))); 

Что нет t генерирует ошибку, но ничего не делает. Что я делаю неправильно?

ответ

1

$ .on() function Второй аргумент - это строка (селектор), а не элемент 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: не может назначить свойства (новый 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

 Смежные вопросы

  • Нет связанных вопросов^_^