2013-02-12 61 views
1

我有一个子导航(使用下面的代码)在单击适当的链接时切换div/off。它工作完美。唯一的问题是,现在我需要使用散列(pageName.php#div4)链接到此页面,并使用id div4打开div,并且我没有太多运气。从关闭页面链接中显示一个div

关于我如何实现这一点的任何想法?

子导航HTML:

<div class="subnav"> 
    <a href="javascript:;" data-target="1" class="showDiv active">Link</a> 
    <a href="javascript:;" data-target="2" class="showDiv">Link</a> 
    <a href="javascript:;" data-target="3" class="showDiv">Link</a> 
    <a href="javascript:;" data-target="4" class="showDiv">Link</a> 
</div> 

内容HTML:

<div id="div1" class="targetDiv">Content</div> 
<div id="div2" class="targetDiv">Content</div> 
<div id="div3" class="targetDiv">Content</div> 
<div id="div4" class="targetDiv">Content</div> 

的JavaScript:

$('.showDiv').on('click', function() { 
    $(this).addClass('active').siblings().removeClass('active'); 
    $('.targetDiv').fadeOut("fast").delay(200); 
    $('#div' + $(this).data('target')).fadeIn("slow"); 
}); 

$('.showDiv').first().click(); 

回答

0

现在我需要链接到这个网页和开放的 - 说 - DIV #4

如果要选择与4 ID的元素,您可以编写:

$('div#' + $(this).data('target')) 

或ID都是唯一的:

$('#' + $(this).data('target')) 

编辑:

var $divs = $('div.targetDiv'); 
$('.showDiv').on('click', function() { 
    var $this = $(this); 
    // return if the clicked element has active class 
    if ($this.hasClass('active')) return; 
    $this.addClass('active').siblings().removeClass('active'); 
    $divs.fadeOut("fast", function() { 
     $divs.filter('#div' + $this.data('target')).delay(200).fadeIn("slow"); 
    }) 
}).first().click(); 
+0

由于未定义的,我想我可能没有解释自己很好。我希望子导航显示/隐藏功能保持原样,但允许像/page.php#div4这样的链接隐藏除id =“div4”之外的所有div。我已将div代码添加到原始问题中。 – rrfive 2013-02-12 04:17:50

+0

@rfive欢迎您,好的,请更新您问题中的'div#4'部分。 – undefined 2013-02-12 04:22:29

0

检查页面加载时的hash component of the URL事件。从那里,根据需要做出回应。

喜欢的东西

$(function() 
{ 
    if(window.location.hash) 
    { 
     $("#" + window.location.hash).click(); 
    } 
});