最近我正在开发一个函数,我需要通过ajax为动态生成的HTML添加一个函数。代码如下所示:
$.ajax(
'success': function(data){
//do sth
a.html(res);
$(document).on('hover',sth in res,function(){
console.log(1)
$(this).toggleClass('classA').toggleClass('classB');
})
}
)
由于console.log()
无法打印任何内容,因此似乎无法正常工作。绑定过程中是否有任何问题?我改变了鼠标悬停点击,鼠标等,似乎没有一个工作。 ajax调用中的其他函数工作正常。
答案 0 :(得分:0)
当动态添加html时,Event Delegation很方便,在您的情况下,您可以附加事件监听器,如 -
$( document ).on( "click", "sth in res", function( event ) { //Give proper selector in place of sth in res
console.log(1)
$(this).toggleClass('classA').toggleClass('classB');
});
此外,您可能希望将侦听器代码放在ajax success
委托之外,而不是$( document ).ready(function() {});
方法。
请注意sth in res
班级名称将引用三个不同的tag
名称,而不是一个班级。如果你想同时选择一个包含所有三个类的元素,那么选择器将是.sth.in.res
-
$( document ).on( "click", ".sth.in.res", function( event ) { //Give proper selector in place of sth in res
console.log(1)
$(this).toggleClass('classA').toggleClass('classB');
});
答案 1 :(得分:0)
活动代表团将为您处理此事。不适合您的非委托方法是(这是您不想要的):
sin
当动态地向DOM添加新元素时,您可以使用以下命令实现事件委派:
pi
以下是一些帮助您开始学习更多内容的链接: