点击展开对应的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的主要内容,如果未能解决你的问题,请参考以下文章