AJAX 未完全工作后重新初始化 jQuery

Reinitlaizing jQuery after AJAX not working fully

我正在尝试将 jQuery 图库添加到使用 AJAX 菜单过滤产品的动态 php 页面 (Magento).当释放可选择的菜单项或按下 'clear all' 按钮以重新加载原始产品堆栈时,我的图库会重新加载并且脚本不会完全返回。画廊图像的正确空间像空占位符一样返回,但图像不显示。 这是我尝试重新初始化画廊的 2 个独立脚本:

当前脚本:

<script type="text/javascript" charset="utf-8">
    $(document).bind('m-ajax-after')(function() {
        $('#gallery').finalTilesGallery();
    });
</script>

第一次尝试:

jQuery(document).bind('m-ajax-after', function(e, selectors, url, action) {
    $('#gallery').finalTilesGallery();
});

在我添加此脚本之前,图库根本不会显示,所以我知道我至少走在了正确的轨道上。

看起来 m-ajax-after 所指的扩展是 ManaDev SEO Layered Navigation Plus。 http://www.manadev.com/seo-layered-navigation-plus/ 我在互联网上的多个论坛中发现,他们建议在重新加载菜单后使用此代码段重新初始化任何 jQuery:

jQuery(document).bind('m-ajax-after', function (e, selectors, url, action) {
    // reinitialize your script 
});

但是,他们不提供任何支持来说明这是如何工作的或为什么工作。

谷歌搜索 "m-ajax-after" 确实 return 没什么用。我找不到此事件的任何文档,或者它适用于哪些版本(或它的作用)。

但是,如果你有这样的事件,你没有正确地附加它:

$(document).bind('m-ajax-after') (function() {

正确的写法是:

$(document).bind('m-ajax-after', function() {

不过假设你还没有 jQuery 的旧版本,还有一个更好的方法:

$(document).on('m-ajax-after', function() {

您可以轻松地测试它是否在您期望的时候被调用,例如添加一个警报:

$(document).on('m-ajax-after', function() {
    alert('m-ajax-after invoked');
    $('#gallery').finalTilesGallery(); //Final Tiles Grid function apparently
}); 

不过,您的 第一次尝试 写得正确,可能应该有效。但是在没有所有参数和警报的情况下值得尝试。

我遇到了同样的问题,请检查您是否有超过一个 jQuery 进入页面