【问题标题】:Heading Expand/Collapse Jquery Working but is Expanded by Default, I need it collapsed by default标题展开/折叠 Jquery 工作但默认展开,我需要它默认折叠
【发布时间】:2017-09-29 13:18:51
【问题描述】:

所以我正在开发一个共享点网站。我对 javascript 完全陌生。我一直在使用我发现的 jquery 来启用与标题类型相关的展开/折叠功能。单击标题时,标题下方的所有段落内容都会展开或折叠。

效果很好,唯一的问题是页面加载时,所有内容默认展开,然后在页面加载完成后片刻折叠。加载时看起来很草率,所以我希望默认情况下所有内容都折叠起来。

我也不需要在编辑模式或维基页面中禁用展开/折叠的功能,如果这会使这个问题变得更简单的话。

这是我正在使用的脚本:

    <script language="javascript" type="text/javascript" 
src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.2.min.js"></script>
 <script language="javascript" type="text/javascript">

$(document).ready(function () {
 var inEditMode = Utils.checkPageInEditMode();
 // Prevent the collapsing of <h2> blocks when in SharePoint's [Edit Mode]
 if (!inEditMode) {
 UI.collapseContentHeaders();
 UI.toggleContentHeaders();
 }
 });

var UI = {
 collapseContentHeaders: function () {
 $('#DeltaPlaceHolderMain h2').each(function (index, value) {
 // Collapses all <h2> blocks 
 {
 $(this).toggleClass('expand').nextUntil('h2').slideToggle(100);
 }
 });
 },

 toggleContentHeaders: function () {
 // Toggles the accordion behavior for <h2> regions onClick
 $('#DeltaPlaceHolderMain h2').click(function () {
 $(this).toggleClass('expand').nextUntil('h2').slideToggle(100);
 });
 }
 }

var Utils = {
 checkPageInEditMode: function () {
 var pageEditMode = null;
 var wikiPageEditMode = null;

// Edit check for Wiki Pages
 if (document.forms[MSOWebPartPageFormName]._wikiPageMode) {
 wikiPageEditMode = 
document.forms[MSOWebPartPageFormName]._wikiPageMode.value;
 }
 // Edit check for all other pages
 if (document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode) {
 pageEditMode = 
 document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode.value;
 }
 // Return the either/or if one of the page types is flagged as in Edit Mode
 if (!pageEditMode && !wikiPageEditMode) {
 return false;
 }
 return pageEditMode == "1" || wikiPageEditMode == "Edit";
}
 }
 </script>

【问题讨论】:

  • UI.collapseContentHeaders(); UI.toggleContentHeaders();这是页面加载后展开和折叠的原因,因此您需要验证内容是否展开然后仅折叠工作。因此在页面加载后您应该调用折叠并避免 UI.toggleContentHeaders();
  • 为您的问题提供示例小提琴
  • 尝试从collapseContentHeaders()中省略.slideToggle(100)
  • ...赞成.hide()

标签: javascript jquery


【解决方案1】:

只删除if语句

if (index > 0) {

所以我必须老老实实$(this).toggleClass('expand').nextUntil('h2').slideToggle(100);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2014-02-13
    相关资源
    最近更新 更多