[英]how to change plus and minus sign perfectly for showing open and close layers
您好,我已經創建了一個列表,用於顯示產品及其詳細信息,但是當我打開一個“加號”變為減號的圖層時,我無法更改減號和加號,但再單擊一次后,它不會再次更改為“加號”。 如何做到這一點請看圖片以便更好地理解。
$('#layername').click(function() { $('#layerDetail').slideToggle(); $('#layerDetail2').slideUp(); $('#layerDetail3').slideUp(); }) $('#layername2').click(function() { $('#layerDetail2').slideToggle(); $('#layerDetail1').slideUp(); $('#layerDetail').slideUp(); }) $('#layername3').click(function() { $('#layerDetail3').slideToggle(); $('#layerDetail').slideUp(); $('#layerDetail2').slideUp(); }) $('.SLayer').click(function() { x = $(this).next('li'); if ($(this).next('li').css('display') == 'none') { $(this).find('span:first').text('+') } else { $(this).find('span:first').text('-') } });
* { box-sizing: border-box } body { font-family: "Lato", sans-serif; }.SLayer { background: #eee; padding: 10px; cursor: pointer; }
<ul style="list-style: none; "> <li class="SLayer" id="layername"> <span style="font-weight: 600; color:black">+</span> <span> Car </span> </li> <li class="SLayer" id="layerDetail" style="background:blue; padding: 20px; color: white; display: none">Car Details</li> <li class="SLayer" id="layername2"><span style="font-weight: 600; color:black">+</span> <span> Bus </span> </li> <li class="SLayer" id="layerDetail2" style="background:blue; padding: 20px; color: white; display: none">Car Details</li> <li class="SLayer" id="layername3"><span style="font-weight: 600; color:black">+</span> <span> Train</span> </li> <li class="SLayer" id="layerDetail3" style="background:blue; padding: 20px; color: white; display: none">Car Details</li> </ul>
我稍微修改了你的代碼。 你可以試試這個:
$('li[id^=layername]').click(function() {
var t = $(this).next();
$("span:first",this).text($("span:first",this).text() == "+" ? "-" : "+")
t.slideToggle();
$('li[id^=layername]').not(this).find("span:first").text('+');
$('li[id^=layerDetail]').not(t).slideUp();
})
演示
$('li[id^=layername]').click(function() { var t = $(this).next(); $("span:first",this).text($("span:first",this).text() == "+"? "-": "+") t.slideToggle(); $('li[id^=layername]').not(this).find("span:first").text('+'); $('li[id^=layerDetail]').not(t).slideUp(); })
* { box-sizing: border-box } body { font-family: "Lato", sans-serif; }.SLayer { background: #eee; padding: 10px; cursor: pointer; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul style="list-style: none; "> <li class="SLayer" id="layername"> <span style="font-weight: 600; color:black">+</span> <span> Car </span> </li> <li class="SLayer" id="layerDetail" style="background:blue; padding: 20px; color: white; display: none">Car Details</li> <li class="SLayer" id="layername2"><span style="font-weight: 600; color:black">+</span> <span> Bus </span> </li> <li class="SLayer" id="layerDetail2" style="background:blue; padding: 20px; color: white; display: none">Car Details</li> <li class="SLayer" id="layername3"> <span style="font-weight: 600; color:black">+</span> <span> Train</span> </li> <li class="SLayer" id="layerDetail3" style="background:blue; padding: 20px; color: white; display: none">Car Details</li> </ul>
一些建議:
$('.header').click(function() { $(".header").not(this).next().slideUp(); $(this).next().slideToggle(); $(".header").not(this).removeClass("opened"); $(this).toggleClass("opened"); })
* { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: "Lato", sans-serif; }.SLayer { background: #eee; padding: 10px; cursor: pointer; }.header {padding-left: 30px;position: relative;}.header:before, .header:after { content: ""; display: block; position: absolute; height: 1px; width: 10px; background: red; top: 50%; left: 14px; transform: translateY(-50%); }.header:before { transform: translateY(-50%) rotate(90deg); }.header.opened:before { opacity: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul style="list-style: none; "> <li class="SLayer header" id="layername"> Car </li> <li class="SLayer" id="layerDetail" style="background:blue; padding: 20px; color: white; display: none">Car Details</li> <li class="SLayer header" id="layername2"> Bus </li> <li class="SLayer" id="layerDetail2" style="background:blue; padding: 20px; color: white; display: none">Car Details</li> <li class="SLayer header" id="layername3"> Train </li> <li class="SLayer" id="layerDetail3" style="background:blue; padding: 20px; color: white; display: none">Car Details</li> </ul>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.