首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jquery中单击选项卡时禁用单击?

在jquery中单击选项卡时禁用单击?
EN

Stack Overflow用户
提问于 2019-08-19 14:35:57
回答 1查看 30关注 0票数 0

我有这个问题。在我的代码中,当我反复单击选项卡: mod-2或mod-3时,边框将继续扩展。单击选项卡时如何停止?

问题2:如何检查html中是否已经存在代码div class="l-item“?如果它已经存在,js中的.wrapInner会停止运行吗?:

代码语言:javascript
复制
$('.vd-list li').wrapInner('<div class="l-item"></div>');

演示:http://jsfiddle.net/b9tcvjxg/

代码语言:javascript
复制
$('.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();
});
代码语言:javascript
复制
.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;
}
代码语言:javascript
复制
<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>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-19 14:48:35

你可以这样做:

代码语言:javascript
复制
$('.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/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57558917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档