Javascript 如何仅将事件侦听器附加到新创建的元素?
当我启动一个函数时,我希望它只对我传递的元素应用侦听器,特别是Javascript 如何仅将事件侦听器附加到新创建的元素?,javascript,jquery,Javascript,Jquery,当我启动一个函数时,我希望它只对我传递的元素应用侦听器,特别是这个jQuery元素 addEventListeners(this); function addEventListeners(el) { $(el).mouseenter(function() { $(this).stop(true,true).switchClass("", "HIGHLIGHT", 400, "easeInOutQuad"); }); $(
这个jQuery元素
addEventListeners(this);
function addEventListeners(el) {
$(el).mouseenter(function() {
$(this).stop(true,true).switchClass("", "HIGHLIGHT", 400, "easeInOutQuad");
});
$(el).mouseleave(function() {
$(this).stop(true,true).switchClass("HIGHLIGHT", "", 400, "easeInOutQuad");
});
}
它从AJAX结果触发:
$.post(url,{el:wartosc_inputa},function(returned) {
var data = $(returned).hide();
$("#listaElementow").prepend(data);
data.slideDown();
loading();
addEventListeners(this);
});
如何编写好代码?此代码没有从addEventListeners(此)传递变量代码>来发挥作用。在那种情况下,这个
并不是你所期望的。试试这个:
var self = this;
$.post(url,{el:wartosc_inputa},function(returned) {
var data = $(returned).hide();
$("#listaElementow").prepend(data);
data.slideDown();
loading();
addEventListeners(self);
});
从成功处理程序其余部分的上下文判断,我假设returned
是您试图将处理程序绑定到的DOM元素。假设情况如此:
$.post(url,{el:wartosc_inputa},function(returned) {
var data = $(returned).hide();
$("#listaElementow").prepend(data);
data.slideDown();
loading();
addEventListeners(data[0]);
// change this ^^^^
// pass the DOM element here, or
// change the addEventListeners function to take a jquery element
});
在ajax回调函数中,我认为“this”将是ajax对象,不再是元素,因此在ajax启动之前,需要将“this”保存在变量中
that = this;
$.post(url,{el:wartosc_inputa},function(returned) {
var data = $(returned).hide();
$("#listaElementow").prepend(data);
data.slideDown();
loading();
addEventListeners(that);
});
您试图将事件侦听器附加到什么?