2012-10-16 123 views
0

我正在构建一个web应用程序,并且一段时间以来一直在困扰着我,当我通过ajax将HTML加载到我的页面时,我需要在$文件)。就绪()。

咱们例如说我有这样的:

$(document).ready(function() { 

    $('#searchInput').keyup(function() { 
     // Do something 
    }); 

}); 

但是我使用id =“searchInput”输入字段中的DOM加载时不会加载 - 它被后来装上使用AJAX,当用户点击一个特定的元素。 现在我的id =“searchInput”的输入字段被加载,但keyup(函数)不会侦听#searchInput,因为它没有加载到原始DOM中。

现在,我唯一的解决方案就是这样做:

function loadEvents() { 
    $('#searchInput').keyup(function() { 
     // Do something 
    }); 
} 

$(document).ready(function() { 
    loadEvents(); 
}); 

,然后在阿贾克斯更迭:

succes: 
    function() { 
     loadEvents(); 
    } 

这工作...但我不禁想到有一个更聪明的方法...

我有我的loadEvents()内的多个函数,对我来说,我似乎不是最好的解决方案,每次ajax调用成功时重新加载所有函数?

当然,我可以做出许多不同的ajax调用,这些调用在ajax成功执行特定的功能需要,但是我将不得不创建许多不同的ajax函数。

有更好的解决方案吗?

回答

0

您可以使用下面的代码来整合所有的成功回调代码在一个地方

$(selector).ajaxSuccess(function(event,xhr,options){ 
    //DO YOUR STUFF HERE 
}); 

查看更多有关它在http://api.jquery.com/ajaxSuccess/

相关问题