【问题标题】:Accordion Experiencing jQuery Issue手风琴遇到 jQuery 问题
【发布时间】:2020-11-23 13:48:36
【问题描述】:

我目前正在使用 Accordion 和 jQuery 制作 HTML 下拉菜单。例如在下面的 sn-p 中,我有不同级别的 AU 控件。我想用级别等级组织父行,然后在每个级别父行下组织适当的控件。

$(document).ready(function() {
  $('.ui.accordion').accordion();

  /* Alternative way to change color of accordion */
  //$(".drop").css("color", "yellow");
});
/* this doesn't work*/

.ui.styled.accordion .accordion .title,
.ui.styled.accordion .title {
  color: black;
  background-color: #eee;
  cursor: pointer;
  padding: 18px;
  width: 100%;
  height: auto;
  border: none;
  text-align: left;
  outline: none;
  font-size: 15px;
  transition: 0.5s;
}

.ui.styled.accordion .accordion .title,
.ui.styled.accordion .title:hover {
  color: #f2711c;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" type="text/javascript"></script>
<script src="https://cdn.jsdelivr.net/npm/semantic-ui@2.3.1/dist/semantic.min.js" type="text/javascript"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui@2.3.1/dist/semantic.min.css">


<div class="ui stackable grid container">
  <div class="one column row">
    <div class="column">
      <div class="ui styled accordion">
        <!-- Accordion parent -->
        <div class="title"><i class="dropdown icon"></i>Level 2</div>
        <div class="content">
          <div class="ui divider"></div>
          <div class="ui stackable grid container">
            <div class="three column row">
              <div class="column">
                <div class="ui styled accordion">
                  <div class="title drop"><i class="dropdown icon"></i>AU.2.041 Ensure that the actions of individual system users can be uniquely traced to those users so they can be held accountable for their actions.</div>
                  <div class="content">
                    hi
                  </div>
                </div>
              </div>
              <div class="column">
                <div class="ui styled accordion">
                  <div class="title drop"><i class="dropdown icon"></i>AU.2.042 Create and retain system audit logs and records to the extent needed to enable the monitoring, analysis, investigation, and reporting of unlawful or unauthorized system activity.</div>
                  <div class="content">
                    hi
                  </div>
                </div>
              </div>
              <div class="column">
                <div class="ui styled accordion">
                  <div class="title drop"><i class="dropdown icon"></i>AU.2.043 Provide a system capability that compares and synchronizes internal system clocks with an authoritative source to generate time stamps for audit records.</div>
                  <div class="content">
                    hi
                  </div>
                </div>
              </div>
              <div class="column">
                <div class="ui styled accordion">
                  <div class="title drop"><i class="dropdown icon"></i>AU.2.044 Review audit logs.</div>
                  <div class="content">
                    hi
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

更新: 我已经解决了嵌套问题并且能够解决这个问题。现在我遇到的问题是我认为与 jQuery 相关的问题。当我在 JSFiddle 中运行我的测试用例时,父行打开,并包含我想要的所有正确子行。当我尝试打开子行时,它们会打开半秒钟,然后立即折叠。

【问题讨论】:

    标签: javascript html jquery css accordion


    【解决方案1】:

    好的,经过测试和阅读文档,我发现了问题。 您正在使用 accordion

    绑定多个嵌套 div

    现在让我们看看您的 html 并尝试找出问题所在。

    这是你的原始 Html

    <div class="ui stackable grid container">
                        <div class="one column row">
                            <div class="column">
                                <div class="ui styled accordion"> <!-- Accordion parent -->
                                    <div class="title"><i class="dropdown icon"></i>Level 2</div>       
                                    <div class="content">
                                        <div class="ui divider"></div>
                                        <div class="">
                                            <div class="three column row">
                                                <div class="column">
                                                    <div class="ui styled accordion">
                                                        <div class="title drop"><i class="dropdown icon"></i>AU.2.041 Ensure that the actions of individual system users can be uniquely traced to those users so they can be held accountable for their actions.</div>
                                                        <div class="content">
                                                            hi
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div> 
    

    现在,如果您仔细观察,您会看到不止一个包含.ui.accordion 的 div 哪个触发了问题。

    最好的解决方案是给 div(ui stackable grid container) 一个新的类或 Id,然后尝试用这个 id 绑定它。

    这是结果

    $(document).ready(function(){
        $('.retro').accordion();
      
      /* Alternative way to change color of accordion */
      //$(".drop").css("color", "yellow");
    });
    /* this doesn't work*/
    .ui.styled.accordion .accordion .title, .ui.styled.accordion .title {
        color: black;
      background-color: #eee;
      cursor: pointer;
      padding: 18px;
      width: 100%;
      height: auto;
      border: none;
      text-align: left;
      outline: none;
      font-size: 15px;
      transition: 0.5s;
    }
    
    .ui.styled.accordion .accordion .title, .ui.styled.accordion .title:hover {
        color: #f2711c;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" type="text/javascript"></script>
    <script src="https://cdn.jsdelivr.net/npm/semantic-ui@2.3.1/dist/semantic.min.js" type="text/javascript"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui@2.3.1/dist/semantic.min.css">
    
    
    <div class="ui stackable grid container retro">
                        <div class="one column row">
                            <div class="column">
                                <div class="ui styled accordion"> <!-- Accordion parent -->
                                    <div class="title"><i class="dropdown icon"></i>Level 2</div>       
                                    <div class="content">
                                        <div class="ui divider"></div>
                                        <div class="ui stackable grid container">
                                            <div class="three column row">
                                                <div class="column">
                                                    <div class="ui styled accordion">
                                                        <div class="title drop"><i class="dropdown icon"></i>AU.2.041 Ensure that the actions of individual system users can be uniquely traced to those users so they can be held accountable for their actions.</div>
                                                        <div class="content">
                                                            hi
                                                        </div>
                                                    </div>
                                                </div>
                                                <div class="column">
                                                    <div class="ui styled accordion">
                                                        <div class="title drop"><i class="dropdown icon"></i>AU.2.042 Create and retain system audit logs and records to the extent needed to enable the monitoring, analysis, investigation, and reporting of unlawful or unauthorized system activity.</div>
                                                        <div class="content">
                                                            hi
                                                        </div>
                                                    </div>
                                                </div>
                                                <div class="column">
                                                    <div class="ui styled accordion">
                                                        <div class="title drop"><i class="dropdown icon"></i>AU.2.043 Provide a system capability that compares and synchronizes internal system clocks with an authoritative source to generate time stamps for audit records.</div>
                                                        <div class="content">
                                                            hi
                                                        </div>
                                                    </div>
                                                </div>
                          <div class="column">
                                                    <div class="ui styled accordion">
                                                        <div class="title drop"><i class="dropdown icon"></i>AU.2.044 Review audit logs.</div>
                                                        <div class="content">
                                                            hi
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>

    【讨论】:

    • 这很完美!我遇到的唯一问题是为什么父行的包含 div 不宽。我希望它占据页面的大部分宽度(在本例中为 SharePoint 页面),但宽度没有拉伸到 100%? jsfiddle.net/tb36jsew这是一个新的小提琴
    • 如果我理解正确,那么您希望拥有 100% 的宽度。那么你需要对title、'ui styledaccordion' 和ui stackable grid container retro 进行一些更改,并将其设为 100% 宽度。不要忘记有些需要标记 !importend 以覆盖库 CSS
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    相关资源
    最近更新 更多