如何将事件监听器仅附加到新创建的元素?

当我启动一个函数时,我希望它将侦听器应用到我通过的元素,特别是this 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(this);中的变量传递给函数。

回答:

从您的成功处理程序的其余的背景下来看,我认为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

});

回答:

this在这种情况下是不是你所期望的。试试这个:

var self = this; 

$.post(url,{el:wartosc_inputa},function(returned) {

var data = $(returned).hide();

$("#listaElementow").prepend(data);

data.slideDown();

loading();

addEventListeners(self);

});

回答:

在Ajax回调函数

“这”将是Ajax对象,我认为并不再是一个元素,所以你需要保存在变量“这个”阿贾克斯开始之前。

that = this; 

$.post(url,{el:wartosc_inputa},function(returned) {

var data = $(returned).hide();

$("#listaElementow").prepend(data);

data.slideDown();

loading();

addEventListeners(that);

});

以上是 如何将事件监听器仅附加到新创建的元素? 的全部内容, 来源链接: utcz.com/qa/258281.html

回到顶部