JQuery - 一些菜单问题

时间:2009-10-12 20:03:44

标签: jquery events click

我有一个包含 (链接)标签的菜单。在Jquery中,我在菜单部分( a )处理点击事件,然后显示内容块。一切都还可以,但是现在我想让内容中的链接进入菜单的其他部分。

<div id="head_menu">
   <a href="#order">1</a>
   <a href="#portfolio">2</a>
   <a href="#contacts">3</a>
   <a href="#vacancies">4</a>
   <a href="#about">5</a>
</div>

$('#head_menu a').click(function(){
   currentPage = this.href.split( '#' )[1];

   // If content area is already opened - close it
   if( $('#text').is(':visible') )
   {
      $('#text').slideUp();
   }

   $("#inner").load( 'static_page.php?page=' + currentPage, function() {
      $('#text').slideDown();
   });
});

这里我只需打开带有需要文本的内容窗口,点击菜单。所以,现在我希望将内容链接到另一个菜单部分:

<div id="inner"><a href="#about">link text</a></div>

这是JQuery代码:

$('#inner a').live( 'click', function() {
 $('#head_menu a[href*=' + document.location.hash + ']').click();
});

在第一次点击当前内容菜单后隐藏并显示相同的内容,但在第二次点击后我得到了,我想要的:由于点击的菜单打开的新内容。为什么它只在第二次点击后才会消失?

2 个答案:

答案 0 :(得分:0)

首次点击后,

document.location已更改(考虑到这一点时这是有意义的,因为您可以使用JavaScript取消点击)。
尝试类似于你在其他函数上所做的事情(假设它有效,并考虑将其移动到一个函数 - 这是重复的代码):

$('#inner a').live( 'click', function() {
   var target = this.href.split('#')[1];
   $('#head_menu a[href*=' + target  + ']').click();
});

答案 1 :(得分:0)

你在寻找像这样的东西

$('#head_menu a').click(function(){
   var currentPage = this.href.substring(1);

    $('#text').slideUp();  

    $("#inner").load('static_page.php?page=' + currentPage, function() {
        $('#text').slideDown();
        $('#inner a').click(function() {
            var page = this.href.substring(1);
            $('#head_menu a[href*=' + page  + ']').click();
        });
    });
});

我不认为我完全理解你的描述,但我认为这就是你所追求的。