我有一个UL列表,每个LI都有一个隐藏的DIV,以及一个显示隐藏DIV的“更多信息”链接。 但是,单击此按钮也会显示所有其他LI的隐藏DIV。
我怎样才能隐藏/显示LI中的DIV,而不是所有其他隐藏的DIV节目?
如果我点击一个,我怎么能隐藏其他人呢?我想保留这部分,但以后我想删除它。
同样点击我希望“更多信息”链接中的文字更改为“隐藏”。
这是我目前的剧本:
$(window).load(function() {
$('.grey_button a').toggle(function() {
$('.job_description').slideDown('');
return false;
},
function() {
$('.job_description').slideUp('');
return false;
});
});
答案 0 :(得分:2)
以下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>
顺便说一下,没有必要将空字符串传递给slideUp()
/ slideDown()
,而不传递参数(整数(毫秒数)或字符串)默认值为相反,使用400毫秒。
参考文献:
答案 1 :(得分:2)
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>
答案 2 :(得分:1)
如果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();
});
答案 3 :(得分:1)
This code会打开实际内容并隐藏所有其他内容:
<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>
答案 4 :(得分:0)
访问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;
});
});
答案 5 :(得分:0)
在课堂上调用.slideUp()
会隐藏所有内容,然后只使用$(this)
关键字触发li
中的课程。
尝试:
$('.grey_button a').toggle(function() {
$('.job_description').slideUp();
$(this).parent().find('.job_description').slideDown();
return false;
}
答案 6 :(得分:0)
试试这个:
$(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;
});
});
答案 7 :(得分:0)
查看此jsfiddle
示例here。
一瞥jquery功能......试试:
$('.top').on('click', function() {
$parent_box = $(this).closest('.box');
$parent_box.siblings().find('.bottom').hide();
$parent_box.find('.bottom').toggle();
});