我有这个问题。在我的代码中,当我反复单击选项卡: mod-2或mod-3时,边框将继续扩展。单击选项卡时如何停止?
问题2:如何检查html中是否已经存在代码div class="l-item“?如果它已经存在,js中的.wrapInner会停止运行吗?:
$('.vd-list li').wrapInner('<div class="l-item"></div>');演示:http://jsfiddle.net/b9tcvjxg/
$('.mod-1').on('click', function() {
$('.display-tab .on').removeClass('on');
$(this).addClass('on');
$('.vd-list').removeClass('mod-2').removeClass('mod-3').addClass('mod-1');
$('.vd-list .l-item').contents().unwrap();
$('.vd-list .v-date, .vd-list .v-info-i:last-child, .vd-list .v-desc').show();
});
$('.mod-2').on('click', function() {
$('.display-tab .on').removeClass('on');
$(this).addClass('on');
$('.vd-list').removeClass('mod-1').removeClass('mod-3').addClass('mod-2');
$('.vd-list li').wrapInner('<div class="l-item"></div>');
$('.vd-list .v-date, .vd-list .v-info-i:last-child').hide();
$('.vd-list .v-desc').show();
return false;
});
$('.mod-3').on('click', function() {
$('.display-tab .on').removeClass('on');
$(this).addClass('on');
$('.vd-list').removeClass('mod-1').removeClass('mod-2').addClass('mod-3');
$('.vd-list li').wrapInner('<div class="l-item"></div>');
$('.vd-list .v-date, .vd-list .v-info-i:last-child, .vd-list .v-desc').hide();
});.tab-list {
display: inline-block;
vertical-align: middle;
}
.tab-list li {
float: left;
height: 48px;
line-height: 48px;
margin-right: 20px;
cursor: pointer;
color: #222;
text-align: center;
font-size: 14px;
font-weight: bold;
}
.mod-2 .l-item,
.mod-3 .l-item {
border: 3px solid #111;
}
.mod-1 .r::after {
content: "Mod 1";
color: red;
font-weight: bold;
}
.mod-2 .r::after {
content: "Mod 2";
color: green;
font-weight: bold;
}
.mod-3 .r::after {
content: "Mod 3";
color: blue;
font-weight: bold;
}
ul {
list-style: none;
}<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul class="tab-list display-tab">
<li class="mod-1 on">Mod 1</li>
<li class="mod-2">Mod 2</li>
<li class="mod-3">Mod 3</li>
</ul>
<ul class="vd-list mod-1">
<li>
<div class="l"></div>
<div class="r">
<div class="v-desc">desc</div>
<div class="v-info">
<span class="v-info-i">1</span>
<span class="v-info-i">2</span>
<span class="v-info-i">3</span>
</div>
<div class="v-date">date</div>
</div>
</li>
</ul>
发布于 2019-08-19 14:48:35
你可以这样做:
$('.mod-2').on('click', function() {
$('.display-tab .on').removeClass('on');
$(this).addClass('on');
$('.vd-list').removeClass('mod-1').removeClass('mod-3').addClass('mod-2');
var alrdyExists = $(".vd-list").find(".l-item").length > 0;
if(!alrdyExists) {
$('.vd-list li').wrapInner('<div class="l-item"></div>');
}
$('.vd-list .v-date, .vd-list .v-info-i:last-child').hide();
$('.vd-list .v-desc').show();
return false;
});这将只显示mod-2内容一次,因为它通过使用find和检查结果的长度来检查mod-2是否已经包含l项。
您可以在点击时将相同的方法应用于mod-3。
这里有一个工作小提琴,以防万一:http://jsfiddle.net/e3fjqnhb/2/
https://stackoverflow.com/questions/57558917
复制相似问题