2009-10-12 121 views
0

我有一个菜单a(links)tags。在jquery中,我正在处理菜单部分的点击事件(a),然后显示内容块。一切都很好,但现在我想让内容链接到菜单的另一部分。JQuery - 一些菜单问题

<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(); 
}); 

和第一点击当前内容菜单后隐藏,比具有相同显示内容,但第二次clickin后,我得到了,我想要的:由于点击菜单新内容打开。为什么它只能在第二次点击之后才会出现?

回答

0

document.location已更改第一次点击后(当您考虑此问题时,这一点很有意义,因为您可以使用JavaScript取消点击)。
尝试类似的东西给你做了其他的功能是什么(假设它的工作原理,并考虑将其移动到一个功能 - 这是重复的代码):

$('#inner a').live('click', function() { 
    var target = this.href.split('#')[1]; 
    $('#head_menu a[href*=' + target + ']').click(); 
}); 
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(); 
     }); 
    }); 
}); 

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