点击展开对应的ul

Posted

技术标签:

【中文标题】点击展开对应的ul【英文标题】:expand corresponding ul on click 【发布时间】:2020-01-09 06:23:20 【问题描述】:

如何通过单击 button1 来展开最近的对应 ul.dropmenu,而不是给它们一个单独的 id/class?

html

<ul class="mainlist">
            <li><img id="wall1.thumb" class="icon" src="/images/placeholder.jpg">
                <img class="button1 d1" src="/images/info.png">
                <ul class="dropmenu menu1">
                    <p id="wall1.info">
                       <div>File Size:</div>
                       <div>Upload Date:</div>
                       <div>Dimensions:</div>
                    </p>
                </ul>
            </li>
            <li><img id="wall2.thumb" class="icon" src="/images/placeholder.jpg">
                <img class="button1 d2" src="/images/info.png”>                    
                <ul class="dropmenu menu2">
                   <p id="wall2.info">
                      <div>File Size:</div>
                      <div>Upload Date:</div>
                      <div>Dimensions:</div>
                   </p>
                </ul>
           </li>
</ul>

jquery:

$(".d1").on("click", function () 
    $("ul.dropmenu.menu1").slideToggle("fast", "linear", function() 
    $("ul.dropmenu").not("ul.dropmenu.menu1").slideUp(200, "swing");
  )
)

$(".d2").on("click", function () 
    $("ul.dropmenu.menu2").slideToggle("fast", "linear", function() 
        $("ul.dropmenu").not("ul.dropmenu.menu2").slideUp(200, "swing");
  )
)

我已经在这里看到了建议的问题:open closest ul on click jQuery 但是它并没有解决我的问题,因为我试图在 ul 中的 li 中扩展 ul 而不仅仅是 ul 中的 li

【问题讨论】:

你能提供一张图片吗? 提供图片?你什么意思? 你放了这么多图片。即使你没有给出任何路径或者你没有把你的代码放在 sn-p 中。所以很难理解。所以请给我们一个清晰的画面,你想要什么。 哦,对不起,图片与问题无关,问题仅与“dropmenu”部分有关。我会尝试编辑它以使其更清晰。 【参考方案1】:

使用siblings() 函数在您点击的按钮附近获取下拉菜单

$(".d1,.d2").on("click", function()   
  var closestUl = $(this).siblings("ul.dropmenu")  
  closestUl.slideToggle("fast", "linear", function() 
    $("ul.dropmenu").not(closestUl).slideUp(200, "swing");
  )
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="mainlist">
  <li>
    <img id="wall1.thumb" class="icon" src="/images/placeholder.jpg" />
    <img class="button1 d1" src="/images/info.png" />
    <ul class="dropmenu menu1">
      <p id="wall1.info">
        <div>File Size:</div>
        <div>Upload Date:</div>
        <div>Dimensions:</div>
      </p>
    </ul>
  </li>
  <li>
    <img id="wall2.thumb" class="icon" src="/images/placeholder.jpg" />
    <img class="button1 d2" src="/images/info.png" />
    <ul class="dropmenu menu2">
       <p id="wall2.info ">
         <div>File Size:</div>
         <div>Upload Date:</div>
         <div>Dimensions:</div>
       </p>
    </ul>
  </li>            
</ul>

【讨论】:

【参考方案2】:

$('.button1').on('click',function()
  
var parent=$(this).parents('li');
$(parent).find('.button1').next('.dropmenu').slideToggle();
$(parent).siblings('li').find('.button1').next('.dropmenu').slideUp()
)
.dropmenu
display:none;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<ul class="mainlist">
            <li><img id="wall1.thumb" class="icon" src="/images/placeholder.jpg">
                <img class="button1 d1" src="/images/info.png">
                <ul class="dropmenu menu1">
                    <p id="wall1.info">
                       <div>File Size:</div>
                       <div>Upload Date:</div>
                       <div>Dimensions:</div>
                    </p>
                </ul>
            </li>
            <li><img id="wall2.thumb" class="icon" src="/images/placeholder.jpg">
                <img class="button1 d2" src="/images/info.png">                    
                <ul class="dropmenu menu2">
                   <p id="wall2.info">
                      <div>File Size:</div>
                      <div>Upload Date:</div>
                      <div>Dimensions:</div>
                   </p>
                </ul>
           </li>
</ul>

【讨论】:

以上是关于点击展开对应的ul的主要内容,如果未能解决你的问题,请参考以下文章

QQ菜单案例,点击展开再次点击关闭(类似手风琴效果)

AngularJs ul 使用幻灯片动画展开/折叠

Jquery实现树桩导航

UITableView实现分组, 并且点击每个分组后展开

关于c#中treeview节点的收缩与展开(.net web)

小demo--横向+展开菜单,支持m站