将jquery函数应用于ajax内容
我想将此函数应用于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
$(".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')
。