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