首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery .is(“:禁用”)无法工作

jquery .is(“:禁用”)无法工作
EN

Stack Overflow用户
提问于 2018-02-19 10:12:35
回答 1查看 629关注 0票数 2

如果liattr disabled=true,我想添加禁用的类。但不知怎么的,这是行不通的。请看看是否有人能帮忙。

代码语言:javascript
复制
$('.expandable-panel').find('.expandable').each(function () {
     if(!$(this).is(':disabled')) {
       var title = $(this).find('.expand-title');
       $(title).click(function () {
         $(this).parent().toggleClass('expanded');
       });
     }else {
       $(this).addClass('disabled');
     }
    });
代码语言:javascript
复制
.expandable-panel {
  padding: 0;
  margin: 0;
  list-style: none;
}
li.disabled {background: red;}
.expandable-panel > li {
  border: 1px solid #c7d0d8;
  border-radius: 3px;
  background: #ffffff;
  margin-bottom: 10px;
}
.expandable-panel > li .expand-title {
  background: none;
  font-weight: normal;
  width: 100%;
  text-align: left;
  position: relative;
  padding-right: 36px;
}
.expandable-panel > li .expand-title:after {
  position: absolute;
  right: 16px;
  top: 14px;
  border: 5px transparent solid;
  content: ' ';
  border-top-color: #669BC6;
}
.expandable-panel > li:hover {
  border-color: #99A6B5;
}
.expandable-panel > li:hover .expand-title:after {
  border-top-color: #136FD5;
}
.expandable-panel > li .panel-content {
  visibility: hidden;
  opacity: 0;
  height: 0;
  transition: all 0.3s ease;
}
.expandable-panel > li .panel-content > .content {
  padding: 1.2em;
}
.expandable-panel .expanded {
  border: 1px solid #99A6B5;
}
.expandable-panel .expanded .panel-content {
  visibility: visible;
  opacity: 1;
  height: auto;
}
.expandable-panel .expanded .expand-title {
  border-bottom: 1px solid #99A6B5;
  border-radius: 3px 3px 0 0;
}
.expandable-panel .expanded .expand-title:after {
  top: 8px;
  border: 5px transparent solid;
  content: ' ';
  border-bottom-color: #669BC6;
}
.expandable-panel .expanded:hover .expand-title:after {
  border-top-color: transparent;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul class="expandable-panel">
        <li class="expandable" disabled="true">
          <button class="expand-title">
            Disabled Lorem ipsum dolor sit amet, consectetur adipiscing elit.
          </button>
          <div class="panel-content">
            <div class="content">
              Content
            </div>
          </div>
        </li>
        <li class="expandable" disabled="false">
          <button class="expand-title">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit.
          </button>
          <div class="panel-content">
            <div class="content">
              <form>
                <ul>
                  <li>
                    <label>Label</label>
                    <input type="text"/>
                  </li>
                  <li>
                    <label>Label</label>
                    <ul>
                      <li>
                        <input type="radio" id="default" name="radio" value="Default">
                        <label for="default">Item to Select</label>
                      </li>
                      <li>
                        <input type="radio" id="selected" name="radio" value="Selected" checked>
                        <label for="selected">Selected Item</label>
                      </li>
                      <li>
                        <input type="radio" id="disabled" name="radio" value="Disable">
                        <label for="disabled">Item to Select</label>
                      </li>
                    </ul>
                  </li>
                </ul>
              </form>
            </div>
          </div>
        </li>
      </ul>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-19 10:15:30

问题在于.expandable元素是li,它不能具有disabled属性。在它们上使用一个类,并在:not选择器中使用它:

代码语言:javascript
复制
$('.expandable-panel').find('.expandable').each(function() {
  if (!$(this).is('.disabled')) {
    $(this).find('.expand-title').click(function() {
      $(this).parent().toggleClass('expanded');
    });
  }
});
代码语言:javascript
复制
.expandable-panel {
  padding: 0;
  margin: 0;
  list-style: none;
}

li.disabled {
  background: red;
}

.expandable-panel > li {
  border: 1px solid #c7d0d8;
  border-radius: 3px;
  background: #ffffff;
  margin-bottom: 10px;
}
.expandable-panel > li.disabled {
  pointer-events: none;
}

.expandable-panel > li .expand-title {
  background: none;
  font-weight: normal;
  width: 100%;
  text-align: left;
  position: relative;
  padding-right: 36px;
}

.expandable-panel > li .expand-title:after {
  position: absolute;
  right: 16px;
  top: 14px;
  border: 5px transparent solid;
  content: ' ';
  border-top-color: #669BC6;
}

.expandable-panel > li:hover {
  border-color: #99A6B5;
}

.expandable-panel > li:hover .expand-title:after {
  border-top-color: #136FD5;
}

.expandable-panel > li .panel-content {
  visibility: hidden;
  opacity: 0;
  height: 0;
  transition: all 0.3s ease;
}

.expandable-panel > li .panel-content > .content {
  padding: 1.2em;
}

.expandable-panel .expanded {
  border: 1px solid #99A6B5;
}

.expandable-panel .expanded .panel-content {
  visibility: visible;
  opacity: 1;
  height: auto;
}

.expandable-panel .expanded .expand-title {
  border-bottom: 1px solid #99A6B5;
  border-radius: 3px 3px 0 0;
}

.expandable-panel .expanded .expand-title:after {
  top: 8px;
  border: 5px transparent solid;
  content: ' ';
  border-bottom-color: #669BC6;
}

.expandable-panel .expanded:hover .expand-title:after {
  border-top-color: transparent;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul class="expandable-panel">
  <li class="expandable disabled">
    <button class="expand-title">
      Disabled Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    </button>
    <div class="panel-content">
      <div class="content">
        Content
      </div>
    </div>
  </li>
  <li class="expandable">
    <button class="expand-title">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    </button>
    <div class="panel-content">
      <div class="content">
        <form>
          <ul>
            <li>
              <label>Label</label>
              <input type="text" />
            </li>
            <li>
              <label>Label</label>
              <ul>
                <li>
                  <input type="radio" id="default" name="radio" value="Default">
                  <label for="default">Item to Select</label>
                </li>
                <li>
                  <input type="radio" id="selected" name="radio" value="Selected" checked>
                  <label for="selected">Selected Item</label>
                </li>
                <li>
                  <input type="radio" id="disabled" name="radio" value="Disable">
                  <label for="disabled">Item to Select</label>
                </li>
              </ul>
            </li>
          </ul>
        </form>
      </div>
    </div>
  </li>
</ul>

还请注意,我在禁用的pointer-events: none上设置了.expandable,这样单击就不会在UI中注册。

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

https://stackoverflow.com/questions/48863791

复制
相关文章

相似问题

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