将jquery函数应用于ajax内容

将jquery函数应用于ajax内容,jquery,ajax,Jquery,Ajax,我想将此函数应用于ajax加载的内容。问题是,函数对这些内容不起作用。每个功能是否都有解决方法 $(".liquidcam").each(function(index) { if( (!this.width || !this.height) ) { $(this).parent().parent().hide("fast"); } $(this).error(function() { $(th

我想将此函数应用于ajax加载的内容。问题是,函数对这些内容不起作用。每个功能是否都有解决方法

     $(".liquidcam").each(function(index) {
          if( (!this.width || !this.height) ) {

         $(this).parent().parent().hide("fast");
        }

        $(this).error(function() {

         $(this).parent().parent().hide("fast");
        });



  });

我最近也遇到了同样的问题。大多数插件都需要通过在
$(document).ready()
中调用它们来应用于元素,我想调用相同的函数,不仅用于加载文档后出现的内容,也用于稍后通过Ajax调用到达的元素

在谷歌搜索了一段时间后,我发现了两种类型的推荐: 1.绑定到每个ajax调用的最后一个事件。 2.绑定到某个特定于元素的事件(如
focus()
)以运行代码

在第一种情况下,您需要在调用ajax时注意这一点。 第二种方法并不适用于所有情况

因此,我的解决方案是从
$(document).ready()和
$(document).ajaxSuccess()调用相同的函数。在这种情况下,我需要防止同一控件发生两次相同的操作。所以我使用了一个特殊的类来应用于所有访问的元素

function doOnReady() {
    $(":input[data-autocomplete]").each(function () {
        //Check wether allready visited
        if (!$(this).hasClass('visited-by-on-ready')) {

            //Do your staff
            $(this).autocomplete({
                source: $(this).attr("data-autocomplete"),
            });
            //mark as visited
            $(this).addClass('visited-by-on-ready');
        }
    });
}

$(document).ready(doOnReady);
$(document).ajaxComplete(doOnReady); 

基于achitaka san所说的,使用最新的jQuery,您可以直接执行

$(document).on('ready ajaxComplete', function() {
    // ...attach your events/plugins here
});

我认为,如果你需要的话,它更干净,更容易遵循/扩展。但是,在创建循环时需要小心(例如,如果您在“ready”处理程序中触发了一些AJAX调用!)。

在将新内容放入DOM后,只需再次运行该函数。当然,它可以处理AJAX加载的内容,但这取决于您执行它的位置。我的做法几乎相同。我刚刚在
doOnReady()
中添加了一个参数,提供了一个selectot来定义其中的每个调用。通过这种方式,例如,
doonredy(“#模态内容”)
将所有内容应用于动态加载的模态内容,以及加载时的
doonredy('body')