首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cakephp- Jquery菜单栏更改URL

Cakephp- Jquery菜单栏更改URL
EN

Stack Overflow用户
提问于 2013-04-11 17:11:21
回答 1查看 296关注 0票数 0

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

代码语言:javascript
运行
复制
           <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文件夹中

代码语言:javascript
运行
复制
         (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);

当我调用这个函数时,它会工作得很好。

代码语言:javascript
运行
复制
   $(document).ready(function () {
$('#menu').tabify();

     });

但我的问题是,当我为#tab1,#tab2,#tab3,#tab4的ctp文件中的每个菜单编写确切的url时,它将无法工作。

我想给这个url

代码语言:javascript
运行
复制
 <li class=><?php echo $this->Html->link('<span>Commuter</span>', array('action' => '../userprofiles/commuter'), array('escape' => false)); ?></span></li>

安装,安装

代码语言:javascript
运行
复制
    <li><a href="#tab3"><span>Pay/Withdraw</span></a></li>

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-11 22:30:25

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

代码语言:javascript
运行
复制
<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'),不要同时使用两者。

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

https://stackoverflow.com/questions/15944858

复制
相关文章

相似问题

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