首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区分PJAX事件

区分PJAX事件
EN

Stack Overflow用户
提问于 2013-10-22 14:13:40
回答 1查看 213关注 0票数 0

我的pjax运行良好,但我需要对不同的pjax事件执行不同的操作。这是我的pjax

代码语言:javascript
复制
//MainMenu
$(document).pjax('.menu li a', '.pjax_submenu', { fragment: '.pjax_submenu', timeout: 5000});

//SubMenu
$(document).pjax('.submenu li a', '.submenu', { fragment: '.submenu',  timeout: 5000 });

简单地说,我有这两个菜单,并且想在pjax:startpjax:end上做一些事情。不幸的是,这些事件总是被称为。例如:

代码语言:javascript
复制
$("body").on("pjax_event", ".pjax_submenu", function(e, category){
    $(document).on('pjax:start', function() {
        if(category === 1){
            $('.pjax_submenu').fadeOut(500);

        } else{
            $('.info').slideUp(500);

        }
    });
    $(document).on('pjax:end', function() {
        if(category === 1){
            $('.pjax_submenu').hide().fadeIn(500);
        } else{
            $('.info').hide().slideDown(500);
        }
    });
});

$("body").on("click", ".menu li a", function() {
    $(".pjax_submenu").trigger("pjax_event", 1);
});
$("body").on("click", ".submenu li a", function() {
    $(".pjax_submenu").trigger("pjax_event", 2);
});

无论我单击菜单还是子菜单链接,结果都是所有pjax代码的执行。即使我这样做:

代码语言:javascript
复制
$("body").on("click", ".menu li a", function() {
    $(document).on('pjax:start', function() { stuff }
    $(document).on('pjax:end', function() { stuff }
});
$("body").on("click", ".submenu li a", function() {
    $(document).on('pjax:start', function() { stuff }
    $(document).on('pjax:end', function() { stuff }
});

它仍然执行>both<,我似乎无法理解区分不同单击项上的pjax事件的方法。

我想做的是淡出一个主菜点上的内容,并使用幻灯片上/向下的子菜单信息框。

如果您需要更多的信息,请告诉我,非常感谢您的每一个帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-22 18:43:50

我想分享我的解决方案,它不是太漂亮-但它的工作太棒了!而且这是我找到的唯一解决办法..。

您将需要pjax版本的可读性!

搜索pjax.js中的"pjax:end“。在下面加上副翼:

代码语言:javascript
复制
fire('pjax:end', [xhr, options])

if(options.menu == 'main'){
    fire('pjax:main:end', [xhr, options])
}else if(options.menu == 'sub'){
    fire('pjax:sub:end', [xhr, options])
}

pjax也一样:开始!

然后,您可以使用以下方法声明您的pjax链接:

代码语言:javascript
复制
//MainMenu
$(document).pjax('.menu li a', '.pjax_submenu', {menu: 'main',fragment:'.pjax_submenu', timeout: 5000});
//SubMenu
$(document).pjax('.submenu li a', '.submenu', { menu: 'sub',fragment: '.submenu',  timeout: 5000 });

你们有不同的活动:

代码语言:javascript
复制
//... for Main Menu
$(document).on('pjax:main:start', function() {
    console.log('pjax:main:start');

});

$(document).on('pjax:main:end', function() {
    console.log('pjax:main:end');

});

//... for Sub Menu
$(document).on('pjax:sub:start', function() {
    console.log('pjax:sub:start');

});
$(document).on('pjax:sub:end', function() {
    console.log('pjax:sub:end');

    $('.info') .slideDown(500);
});

希望这对将来的人有帮助!干杯!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19520334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档