【发布时间】:2014-10-27 08:47:19
【问题描述】:
所以我做了一个功能,当你点击一个按钮时,某个div 会出现它自己的内容。再次单击该按钮时,div 将隐藏,而另一个 div 将出现。这个div 将始终在其他三个 div 都没有被选中时出现。
问题是当我添加一个带有锚链接的href 标签时,我必须在隐藏的 div 显示之前单击两次按钮。
在这里检查小提琴:http://jsfiddle.net/449r8Lwv/
如您所见,当您单击其中一个按钮时,除了 url 发生变化之外什么都没有发生,这是一件好事。但是在同一个按钮上单击 AGAIN 可以显示隐藏的 div。这不是我想要的,我希望 div 在您点击按钮时第一次显示出来。
另外,当直接访问带有锚点名称的 url 时,它会立即显示与锚点相关联的 div,这是一件好事。但是,如果您再次单击另一个按钮,它将显示在未选择 NONE 时通常必须显示的 div,但事实并非如此。
示例:您访问网址 website.com/test.html#2。然后,当您单击按钮 3 时,连接的 div 的内容必须出现(“3”),但只有当没有连接的 div 时才会出现 div(命名为 #text)按钮没有显示出来。
HTML:
<a href="#1">1</a>
<a href="#2">2</a>
<a href="#3">3</a>
<br><br><br>
<div id="clicks">
<a class="click" id="showInfo" data-target=".1"><button>1</button></a>
<a class="click" id="showDataInput" data-target=".2"><button>2</button></a>
<a class="click" id="showHistory" data-target=".3"><button>3</button></a>
</div>
<div class="1 target" style="display: none;"><a name="1">1</a></div>
<div class="2 target" style="display: none;"><a name="1">2</a></div>
<div class="3 target" style="display: none;"><a name="1">3</a></div>
<div id="text">"I WANT THIS DIV GONE EVERYTIME I LET DIV 1, 2 OR 3 SHOW BY CLICKING THE BUTTONS. BUT SHOW UP AGAIN WHEN 1, 2 OR 3 IS NOT SHOWING/SELECTED"</div>
JavaScript/jQuery
<script>
$(document).ready(function () {
var $targets = $('.target');
$('#clicks .click').click(function () {
var $target = $($(this).data('target')).toggle();
$targets.not($target).hide();
$('#text').css('display', $('div.target:visible').length ? 'none':'')
/*$('#contact_info').toggle(!$targets.is(':visible'));*/
});
});
</script>
<script>
function doToggle(num) {
var target = $('div.target' + num);
target.toggle();
$('.target').not(target).hide();
$('#text').css('display', $('div.target:visible').length ? 'none' : '')
}
$('#clicks .click').click(function () {
var num = $(this).data('target');
doToggle(num);
});
function handleHash() {
doToggle("." + location.hash.substring(1));
}
window.onhashchange = handleHash;
$(handleHash);
</script>
非常感谢。
ps:在小提琴中,我只放了第二个脚本部分,因为在我放其他部分时也出现了一些问题。如果你在本地测试它,你应该使用整个 JavaScript/jQuery 部分。
【问题讨论】:
标签: javascript jquery html anchor href