Ajax之后重新启动jQuery无法完全工作



我正在尝试将jQuery画廊添加到动态PHP页面,该页面使用Ajax菜单过滤产品( Magento )。当发布可选的菜单项或按下"清除所有"按钮以重新加载原始产品堆栈时,我的画廊重新加载和脚本并未完全返回。画廊图像的正确空间像空占位符一样返回,但图像没有显示出来。这是我试图重新开始画廊的两个独立脚本:

当前脚本:

<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-tefter所指的扩展名是Manadev SEO分层导航加上。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-ferter"并没有真正返回的工作。我找不到有关此事件的任何文档,或它适用于哪些版本(或它的作用)。

但是,如果您有这样的事件,则将其附加不正确:

$(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进入页面

最新更新