我在这里运行了一个搜索框:
http://codepen.io/h0rhay/pen/Kgqwt
代码:
$('.findNavL1').click(function () {
$(this).children('.slideContainer').toggleClass('show').css('z-index', +1);
});
$('.slideContainer').click(function () {
if ($(this).hasClass('show')) {
$(this).toggleClass('show');
}
});
标记:
<div class="row">
<div class="twelve columns width33">
<div class="navContainer rel">
<h2 class="navHeading">Find a holiday</h2>
<ul class="findHolNav">
<li class="findNavL1" onClick="return true"> <span>When</span>
<div class="slideContainer">
<h2 class="internalContent">This is some content 1</h2>
</div>
</li>
<li class="findNavL1" onClick="return true"> <span>How many Days </span>
<div class="slideContainer">
<h2 class="internalContent">This is some content 2</h2>
</div>
</li>
<li class="findNavL1" onClick="return true"> <span>Where</span>
<div class="slideContainer">
<h2 class="internalContent">This is some content 3</h2>
</div>
</li>
<li class="findNavL1" onClick="return true"> <span>Departing</span>
<div class="slideContainer">
<h2 class="internalContent">This is some content 4</h2>
</div>
</li>
<li class="findNavL1" onClick="return true"> <span>No. of People</span>
<div class="slideContainer">
<h2 class="internalContent">This is some content 5</h2>
</div>
</li>
</ul>
</div>
CSS:
.rel {
position:relative;
}
.staticP {
position:static !important;
}
.show {
display:block !important;
}
.hide {
display:none;
}
/* -----------------------------------------
Shared Styles
----------------------------------------- */
.width33 {
width:33.3% !important;
}
.navContainer {
background:#ccc;
}
.findHolNav {
list-style-type: none;
padding:0;
}
.findNavL1{
cursor:pointer;
}
.findNavL1 span {
padding:20px;
display:block;
}
.findNavL1:nth-of-type(odd){
background-color:#c6c6c6;
}
.findNavL1:hover{
background-color:#c2c2c2;
}
.findNavL1:hover > .slideContainer, .findNavL1:active > .slideContainer {
}
.slideContainer {
display:none;
background-color:lime;
min-height:100%;
position:absolute;
top:0;
left:100%;
width:208%;
}
目前,用户界面几乎是正确的。当您单击链接时,将打开相应的面板。
但是,如果您点击其他链接,则会打开相应的面板,但前一个面板会保持打开状态。
我希望它能够关闭。
只会使活动的一个打开。
//////////////////////////////////////
我应该说..用户界面比我之前说过的要复杂一点。
第一次点击:幻灯片打开容器。
点击相同的链接:幻灯片关闭
单击打开的容器内部:容器保持打开状态。
(我已经把这一切都搞定了)
如果单击其他链接,则打开容器关闭,然后打开新容器。
这就是我被困住了。
答案 0 :(得分:2)
使用以下JS代替您编写的JS(codepen):
$('.findNavL1').click(function(){
$('.slideContainer').hide();
$(this).find('.slideContainer').show();
});
答案 1 :(得分:0)
按以下方式更改您的区块:
if ($(this).hasClass('show')){
$(".slideContainer").removeClass("show");
$(this).toggleClass('show');
}
});
答案 2 :(得分:0)
你可以试试......
$('.findNavL1').click(function(){
$('.slideContainer').each(function( index ){
$(this).removeClass('show');
$(this).addClass('hide');
});
$(this).children('.slideContainer').addClass('show');
});
请参阅此js小提琴...... example
答案 3 :(得分:0)
是的!最后到达那里:
$('.findNavL1').click(function(){
var searchBoxLink = $(this);
var inactiveLink = $('.findNavL1').not(searchBoxLink);
if ( $(inactiveLink).children('.slideContainer').hasClass('show') ){
$(inactiveLink).children('.slideContainer').removeClass('show');
}
$(searchBoxLink).children('.slideContainer').toggleClass('show');
});
$('.slideContainer').click(function(){
if ( $(this).hasClass('show') ){
$(this).toggleClass('show');
}
});