我有一个UL列表,每个LI都有一个隐藏的DIV,和“更多信息”链接,显示隐藏的DIV。 但是,单击此按钮会显示所有其它LI的隐藏层为好。
我怎么只能隐藏/显示在李的DIV,并没有所有的其他隐藏的DIV的节目?
如果我上一按我怎样可以隐藏其他人呢? 我想,虽然在情况下,我想在以后进行删除,以保持这部分分开。
同样在点击我要在“更多信息”链接的文本更改为“隐藏”。
这里是我当前的脚本:
$(window).load(function() {
$('.grey_button a').toggle(function() {
$('.job_description').slideDown('');
return false;
},
function() {
$('.job_description').slideUp('');
return false;
});
});
下面的jQuery应该工作:
$('.grey_button a').toggle(function() {
$(this).closest('li').find('.job_description').slideDown();
return false;
},
function() {
$(this).closest('li').find('.job_description').slideUp();
return false;
});
这是假设HTML类似以下内容:
<ul>
<li><span class="grey_button"><a href="#">Show more information</a></span>
<div class="job_description">Job information...</div></li>
<!-- other list items... -->
</ul>
JS提琴演示 。
顺便说一下,没有必要通过一个空字符串slideUp()
/ slideDown()
不带参数被传递(或者一个整数(在millisecons号),或字符串)的默认值将被用来代替的400毫秒。
参考文献:
jQuery的:
$('.grey_button a').click(function() {
$(this).closest('li').find('.job_description').slideToggle();
});
CSS使隐藏最初作业信息:
<ul>
<li><span class="grey_button"><a href="#">Show more information</a></span>
<div class="job_description" style="display:none" >Job information...</div></li>
</ul>
如果HTML结构是这样的:
<ul class="main">
<li>
<p class="important-info">Bala bala</p>
<p class="more-info" style="display:none;">More bla bla</p>
<a class="_show-more-info">More Information</a>
</li>
<li>
<p class="important-info">Bala bala</p>
<p class="more-info" style="display:none;">More bla bla</p>
<a class="_show-more-info">More Information</a>
</li>
<ul>
然后jQuery代码为您的需求将是这个样子
$('_show-more-info').click(function(){
var thisAnchor = $(this);
var ul = thisAnchor.parents('.main');
ul.find('.more-info').slideUp();
thisAnchor.sibling('.more-info').slideDown();
});
此代码将打开实际内容并隐藏所有其他:
<style type="text/css">
.job_description { display: none; }
.grey_button.close span.hide,
.grey_button.open span.more { display: none; }
.grey_button.close span.more,
.grey_button.open span.hide { display: inline; }
</style>
<script type="text/javascript" encoding="utf-8">
$(document).ready(function() {
$('.grey_button.close').live('click', function() {
$('.grey_button.open').click();
$('.job_description').slideUp();
$(this).siblings('.job_description').slideDown();
$(this).toggleClass('close open');
return false;
});
$('.grey_button.open').live('click', function() {
$('.job_description').slideUp();
$(this).toggleClass('close open');
return false;
});
});
</script>
<ul>
<li>short description
<a class="grey_button close" href="#">
<span class="more">read more</span>
<span class="hide">hide</span></a>
<div class="job_description">Here is more to read.</div>
</li>
<li>short description
<a class="grey_button close" href="#">
<span class="more">read more</span>
<span class="hide">hide</span></a>
<div class="job_description">Here is more to read.</div>
</li>
<li>short description
<a class="grey_button close" href="#">
<span class="more">read more</span>
<span class="hide">hide</span></a>
<div class="job_description">Here is more to read.</div>
</li>
<li>short description
<a class="grey_button close" href="#">
<span class="more">read more</span>
<span class="hide">hide</span></a>
<div class="job_description">Here is more to read.</div>
</li>
</ul>
您应该使用this
背景下在访问li
请尝试
$(window).load(function() {
$('.grey_button a').toggle(function() {
//hide the other
$('.grey_button a').not($(this)).find('.job_description').each(function(){
$(this).slideUp();
})
$('.job_description',this).slideDown('');
return false;
},
function() {
$('.job_description',this).slideUp('');
return false;
});
});
调用.slideUp()
的类会隐藏所有这些,然后只需使用$(this)
关键字到内只触发类li
。
尝试:
$('.grey_button a').toggle(function() { $('.job_description').slideUp(); $(this).parent().find('.job_description').slideDown(); return false; }
尝试这个:
$(window).load(function() {
var $jobs = $('.job_description');
$('.grey_button a').click(function() {
$closest = $(this).closest('li').find('.job_description');
$jobs.not($closest).slideUp();
$closest.slideDown();
return false;
});
});
看看这个jsfiddle
例子在这里 。
的jQuery机能的研究概览...尝试:
$('.top').on('click', function() {
$parent_box = $(this).closest('.box');
$parent_box.siblings().find('.bottom').hide();
$parent_box.find('.bottom').toggle();
});