【问题标题】:Reloading to homepage after hitting an empty anchor击中空锚后重新加载到主页
【发布时间】:2013-07-24 16:55:44
【问题描述】:

请查看http://iglica.dbox.pl/modx/(客户图形项目)

检查菜单上的“KURSY” - 在主页上一切正常,菜单滑动,我可以从子菜单中选择一些东西,等等。不知何故,当我从其他地方点击“KURSY”时,MODX 重定向我到主页。

负责菜单的代码在 menu.min.js 中(我是专门为这个网站买的——我不是 jQuery 熟人)。

附:

我试过这个http://rtfm.modx.com/display/revolution20/Named+Anchor 没有运气

附言

jQuery -

$(function () {
    $('#mainNav ul li.slide a').click(function () {
        var content = ($(this).parent().find("div").html());
        $('#navWrapper #subNav #subNavContainer').fadeOut(100, function () {
            $('#navWrapper #subNav #subNavContainer').html(content);
            $('#navWrapper #subNav #subNavContainer').fadeIn(100);
            $('#navWrapper').stop(false, false).animate({
                'left': 0
            }, 300)
        })
    });
    $('#navWrapper').mouseleave(function () {
        $('#navWrapper').stop(false, false).animate({
            'left': -200
        }, 300)
    })
});

【问题讨论】:

    标签: php jquery menu content-management-system modx


    【解决方案1】:

    尝试用span标签替换你不想做任何事情的a标签,看看你的js代码是否仍然可以正常工作。也许你之后必须看看你的 CSS 样式。

    <li class="slide"><span>Kursy</span>
    <div class="submenu">
    <ul id="submenu">
    <li><a href="index.php?id=12">Dla dzieci</a></li>
    <li><a href="index.php?id=23">Dla młodzieży</a></li>
    <li><a href="index.php?id=13">Dla dorosłych</a></li>
    </ul>
    </div>
    </li>
    

    好的,当锚点触发滑动功能时可以尝试js解决方法:

    HTML

    <li class="slide"><a href="#" class="preventdefault">Kursy</a>
        <div class="submenu">
        <ul id="submenu">
        <li><a href="index.php?id=12">Dla dzieci</a></li>
        <li><a href="index.php?id=23">Dla młodzieży</a></li>
        <li><a href="index.php?id=13">Dla dorosłych</a></li>
        </ul>
        </div>
    </li>
    

    JS

    (function ($) {
        $(window).ready(function () {
            $('.preventdefault').on("click", function (e) {
                //Uncomment if the anchor is required on the url
                //document.location.hash = $(this).attr('href');
    
                return false;
            });
        });
    }(jQuery));
    

    你的代码扩展+添加html类:

    $(function () {
        $('#mainNav ul li.slide a').click(function (e) {
            var content = ($(this).parent().find("div").html());
            $('#navWrapper #subNav #subNavContainer').fadeOut(100, function () {
                $('#navWrapper #subNav #subNavContainer').html(content);
                $('#navWrapper #subNav #subNavContainer').fadeIn(100);
                $('#navWrapper').stop(false, false).animate({
                    'left': 0
                }, 300)
            })
    
            if ($(this).hasClass('preventdefault')) {
                //Uncomment if the anchor is required on the url
                //document.location.hash = $(this).attr('href');
    
                e.preventDefault();
                e.stopPropagation();
            }
    
        });
        $('#navWrapper').mouseleave(function () {
            $('#navWrapper').stop(false, false).animate({
                'left': -200
            }, 300)
        })
    });
    

    【讨论】:

    • 幻灯片功能由锚点触发
    • 在您的开始帖子中看到您的代码示例后,锚点不会触发功能,但点击绑定在 a 标签上。
    • 我已经使用了您的代码,但问题仍然存在。我认为这是一个 100% 的 modx 问题(在子页面上并将鼠标悬停在“kursy”上会显示类似 iglica.dbox.pl/modx/# 的内容 - 显然 modx 将其解释为“转到主页内的 # 标签”并重新加载)。
    • 这是因为你的a href 链接到# 你的页面被重新加载的效果,然后modx 需要# 作为起始页。我尝试的是阻止默认链接功能,因此页面不会重新加载。
    • 感谢您的帮助 hyde,非常感谢!
    猜你喜欢
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多