我已经创建了一个函数来打开并在单击某个元素时显示div。我在一个页面上有几个。如何只打开某个div链接到该页面?我希望能够像这样链接:“http://domain.com/#cat1”..
非常感谢答案!
HTML:
<a href="#cat1" id="cat1" class="h3 toggle">Lorem ipsum</a>
<div class="list-container">
<ul class="list">
<li class="faq">
<p>Lorem ipsum</p>
</li><ul>
JavaScript的:
hShow : function(event) {
var el = $(this),
arrow = $('span.arrow', this),
container = el.next('div.list-container'),
faqList = $('.faq-list:nth(0)', container),
hList;
event.stopPropagation();
event.preventDefault();
if (container.height() > 0) {
// collapse
el.removeClass('expanded');
container.css({'padding-bottom': '0px'}).animate({'height': '0px'}, 250);
} else {
// expand
hList = faqList.height();
el.addClass('expanded');
container.animate({'height': hList +'px'}, 250, function() {
$(this).css({
'padding-bottom': '10px',
'height': 'auto'
});
});
}
答案 0 :(得分:2)
只需使用相同的逻辑处理链接点击和页面加载事件。在div上方找到一个锚点并显示相应的div:
function openDivUnderAnchor(name){
name = name.replace('#','');
$('div.collapsible').hide();
$('a[name='+name+']').next('div').show();
}
$(document).ready(function(){
// opens the correct div if its link is clicked
$(document).on('click', 'a.open', function(){
openDivUnderAnchor($(this).attr('href'));
});
// opens the correct div if its anchor is specified in the URL
openDivUnderAnchor(location.hash);
});
<ul>
<li><a class="open" href="#one">first</a></li>
<li><a class="open" href="#two">second</a></li>
<li><a class="open" href="#three">third</a></li>
<li><a class="open" href="#four">fourth</a></li>
</ul>
<a name="one"></a>
<div class="collapsible">first div</div>
<a name="two"></a>
<div class="collapsible">second div</div>
<a name="three"></a>
<div class="collapsible">third div</div>
<a name="four"></a>
<div class="collapsible">fourth div</div>
答案 1 :(得分:1)
您可以使用网址的“本地部分”,即#{3}}之后的部分“cat1”之类的网址。在此部分中输入您要显示的div的ID,或者在您的情况下输入按钮链接的ID。
首先显示没有任何div打开的页面,然后使用Javascript你使用document.location.hash获取本地部分,这是你的按钮ID。然后,您只需显示与该ID对应的div或模拟按钮上的单击。
一个很好的哈希技术:http://www.example.com/#cat1(针对Ajax描述,但对动态的任何东西都有好处)
答案 2 :(得分:0)
我过去这样做的方法是查看URL哈希,然后“伪造”点击。
例如:
$(function()
{
if(!location.hash) return; // don't do anything if no hash set
$('a.toggle[href="' + location.hash + '"]').click();
});
因此,在加载时($(function() { ... });
)如果设置了哈希(if(!location.hash)...
),请找到带有类别切换的锚标记,其中href设置为当前location.hash
并假冒点击事件就可以了。然后应该触发它的扩展,就像用户实际点击它一样。