2

我有一个 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;
  });

});
4

8 回答 8

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>

JS 小提琴演示

顺便说一句,没有必要将空字符串传递给slideUp()/ slideDown(),而无需传递参数(整数(以毫秒为单位的数字)或字符串),将使用默认值 400 毫秒。

参考:

于 2012-05-04T07:42:45.260 回答
2

查询:

      $('.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>
于 2014-02-04T14:25:54.650 回答
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();
});
于 2012-05-04T08:05:19.253 回答
1

此代码将打开实际内容并隐藏所有其他内容:

<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>​
于 2012-05-04T08:21:39.303 回答
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;
});

});
于 2012-05-04T07:44:27.927 回答
0

您应该this在访问li Please try时使用上下文

$(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;
  });

});
于 2012-05-04T07:41:37.903 回答
0

调用.slideUp()该类会将它们全部隐藏,然后只需使用$(this)关键字仅触发li.

尝试:

$('.grey_button a').toggle(function() { $('.job_description').slideUp(); $(this).parent().find('.job_description').slideDown(); return false; }

于 2012-05-04T07:41:42.223 回答
0

在此处查看此jsfiddle示例。

浏览一下 jquery 功能...尝试:

$('.top').on('click', function() {
    $parent_box = $(this).closest('.box');
    $parent_box.siblings().find('.bottom').hide();
    $parent_box.find('.bottom').toggle();
});
于 2016-12-15T08:29:46.217 回答