我想将此功能应用于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);

关于jquery - 将jQuery函数应用于Ajax内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8771366/

10-09 15:16
查看更多