0

我正在尝试使用 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>

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

4

1 回答 1

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'),不要同时使用两者。

于 2013-04-11T14:30:25.407 回答