2009-10-12 69 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(); 
     }); 
    }); 
}); 

我不認爲我完全理解你的描述,但我認爲這是你所追求的。