Cakephp-Jquery 菜单栏更改 URL

Posted

技术标签:

【中文标题】Cakephp-Jquery 菜单栏更改 URL【英文标题】:Cakephp- Jquery menubar changing URL 【发布时间】:2013-04-11 09:11:20 【问题描述】:

我正在尝试使用 Jquery 为 cakephp 网站创建菜单栏。 下面的代码显示了放置在视图文件夹中的 ctp 文件中的菜单元素。

           <div id="menubar" class="menu">
        <ul id="menu" class="menu">

             <li class="active">
           <a href="#tab4"><span>Allocation</span></a>
             </li>
            <li class=><a href="#tab1"><span>Update Travel</span></a></li>
            <li><a href="#tab2"><span>User Profile</span></a></li>
            <li><a href="#tab3"><span>Pay/Withdraw</span></a></li>

        </ul>
        <div class="clear"></div>
    </div>

我创建了一个 jquery 文件来选择每个菜单项并将这个文件放在 webroot/js 文件夹中

         (function($) 
 $.fn.extend(  
     tabify: function( callback ) 

        function getHref(el)
            hash = $(el).find('a').attr('href');
            hash = hash.substring(0,hash.length-4);
            return hash;
        



        function setActive(el)

            $(el).addClass('active');
            $(getHref(el)).show();
            $(el).siblings('li').each(function()
                $(this).removeClass('active');
                $(getHref(this)).hide();
            );
        

        return this.each(function() 

            var self = this;
            var callbackArguments   =   'ul':$(self);

            $(this).find('li a').each(function()
                $(this).attr('href',$(this).attr('href') + '-tab');
            );

            function handleHash()

                if(location.hash && $(self).find('a[href=' + location.hash + ']').length > 0)              
                    setActive($(self).find('a[href=' + location.hash + ']').parent());
                
            

            if(location.hash)
                handleHash();
            

            setInterval(handleHash,100);

            $(this).find('li').each(function()
                if($(this).hasClass('active'))
                    $(getHref(this)).show();
                 else 
                    $(getHref(this)).hide();
                
            );

            if(callback)
                callback(callbackArguments);
               

        ); 
     
); 
) (jQuery);

当我调用这个函数时,它会正常工作。

   $(document).ready(function () 
$('#menu').tabify();

     );

但我的问题是,当我在 #tab1、#tab2、#tab3、#tab4 的 ctp 文件中为每个菜单写入准确的 url 时,它将不起作用。

我想给这个网址

 <li class=><?php echo $this->html->link('<span>Commuter</span>', array('action' => '../userprofiles/commuter'), array('escape' => false)); ?></span></li>

插入

    <li><a href="#tab3"><span>Pay/Withdraw</span></a></li>

如果有人能解决这个问题,请帮助我

【问题讨论】:

【参考方案1】:

链接的语法应该是数组的形式(请参阅HtmlHelper 的文档)。

<li class="">
    <?php echo $this->Html->link('<span>Commuter</span>', 
                                   array('controller'=>$your_controller_here,
                                         'action' => $your_action_here,
                                    $param1 /*parameters if you need them*/),
                               array('escape' => false)); ?>
</li>

根据您的需要更换控制器和操作等,看看是否可以解决问题。

请注意,没有必要以数组的形式传递 url,但您必须决定是使用数组还是静态字符串 url(如'../userprofiles/commuter'),不要同时使用。

【讨论】:

但实际上我的问题是,如果我在 标签内添加此链接,当我调用 jquery 时会有一些 url 哈希,我们如何管理 tha???/ 我不知道您所说的“url 哈希”是什么意思。你能用firebug检查你用$this->Html->link得到的html吗? 当我调用这个函数时 $(document).ready(function () $('#menu').tabify(); );请查看我的 jquery 代码。

以上是关于Cakephp-Jquery 菜单栏更改 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何在不关闭菜单的情况下选择菜单项?

win7右键菜单发送到选项,怎么添加二级菜单?

更改 tvOS 上的菜单栏位置

长按网页视图的水平菜​​单充气机

导航栏下拉菜单不适用于 Angular 和 Bootstrap 4

微信公众号菜单栏外部链接如何实现?