2016-12-22 32 views
0

最近我开发了一个函数,我需要通过ajax为动态生成的HTML添加一个函数。代码如下所示:如何在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调用中的其他函数正常工作。

+2

什么是'在水库'? – aldrin27

+0

看起来像OP插入垃圾投入,同时认为焦点在其他地方:) –

+0

在res resh中是一个类名称在res字符串中,就像'.classA' –

回答

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'); 
}); 
0

事件代表团将照顾这对你。这是不是为你工作的非授权途径是(这是你不想要的东西):

$(selector).on('click', function(){ ... }); 

当动态地添加新的元素到DOM,则可以使用实现事件委托执行以下操作:

$(document).on('click','selector',function(){ ... }); 

这里有一些链接,可以帮助您开始使用学习更多:

https://learn.jquery.com/events/event-delegation/

jquery Event Delegation