0

我正在尝试使用 JQuery Accordion 代码实现以下目标:

  • 确保在加载页面时不显示隐藏在手风琴内的内容(即短暂闪烁)。我只希望用户在展开手风琴时看到此内容,但在某些浏览器中我可以在页面加载时看到此内容。
  • 如果用户禁用了 Javascript,则显示手风琴 H1 选项卡(例如 Accordion Test),但不会显示任何隐藏在其下方的内容。

举个例子,这是我试图模仿的事情:

http://www.outdoorgb.com/c/inflatable_boats_kayaks/

尝试单击“阅读更多”按钮,将显示更多信息。现在尝试禁用 Javascript。您会注意到单击该按钮不会执行任何操作,并且不会显示更多信息。您可能会说,发生这种情况并不是一件好事,因为 Google 可能不会抓取该内容等。但是,通过 Lynx 运行此 URL 似乎可以很好地读取内容。有人认为这可能是个问题吗?

无论如何,这是我希望适应的代码以满足我的上述观点:

 <!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8" />
  <title>Accordion Test</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
  <link rel="stylesheet" href="http://www.jqueryui.com/resources/demos/style.css" />

  <script>
  $(function() {
    $( "#accordion" ).accordion({
      collapsible: true,
      active: false,
      heightStyle: "content"
    });
  });
  </script>

</head>

<body>

<div id="accordion">
  <h1>Accordion Test</h1>
  <div>
  <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. 

Donec suscipit eros. Nam mi. Proin viverra leo ut odio.</p>
  </div>
</div>

</body>
</html>

任何一位专家可以提供的任何帮助都将不胜感激。

提前谢谢了

乔恩

===============================================

更新

===============================================

感谢Pete 的帮助,我已经解决了第一个问题。如果禁用了javascript,任何人都知道如何解决隐藏内容的问题?当前代码如下所示:

<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8" />
  <title>Accordion Test</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
  <link rel="stylesheet" href="http://www.jqueryui.com/resources/demos/style.css" />

 <script>

$(document).ready(function() {
    $( "#accordion" ).accordion({
      collapsible: true,
      active: false,
      heightStyle: "content"
    });
    $('#hideAccordion').show();
  });

  </script>


</head>

<body>

<script language="text/javascript"> document.write('<div id="hideAccordion" style="display:none">'); </script>

<div id="accordion">
  <h1>Accordion Test</h1>
  <div>
  <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. 

Donec suscipit eros. Nam mi. Proin viverra leo ut odio.</p>
  </div>
</div>

<script language="text/javascript"> document.write('</div>'); </script>

</body>
</html>
4

3 回答 3

1

当页面加载时,即使内容没有 100% 地显示给用户(例如,在手风琴或翻转工具提示中),Google 也会在我的内容包含在 DOM 中时抓取它。

如果此人未启用 Javascript,我认为“阅读更多”文本不可用有任何问题,因为该文本对于使用该页面并不重要。我从未听说过单个客户或他们的客户报告过禁用 JS 存在问题。

这是一些关于禁用 JS 浏览的有用阅读 禁用 JavaScript 的浏览器统计信息

如果 JS 禁用是您的用户组真正关心的问题,那么另一种选择是使用 CSS 来处理您的手风琴,例如 http://www.hongkiat.com/blog/css-content-accordion/

于 2013-01-31T14:33:46.143 回答
1

你可以尝试类似的东西

<script language="text/javascript"> document.write('<div id="hideAccordion" style="display:none">'); </script>

<div id="accordion">
  <h1>Accordion Test</h1>
  <div>
  <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio.</p>
  </div>
</div>

<script language="text/javascript"> document.write('</div>'); </script>

然后在您的文档上准备好调用$('#hideAccordion').show()或更好,如果在您的手风琴加载后有一个函数被调用,请在其中调用 this

就像是

 $(document).ready(function() {
    $( "#accordion" ).accordion({
      collapsible: true,
      active: false,
      heightStyle: "content"
    });
    $('#hideAccordion').show();
  });

编辑

抱歉,我刚刚再次阅读了您的问题,并且由于禁用 javascript 时您不会担心显示内容,您可以简单地在样式表中使用以下样式:

#accordion div {display:none;}

一旦手风琴加载,它应该可以正常工作,而不会在页面加载时显示任何内容。我要说的一点是,它不是很容易访问,但这仅取决于您是否对按照 w3c 标准进行编码感到困扰,并且某些搜索引擎会寻找大块的文本,display:none如果您这样做可能会降低您的搜索排名有很多像这样隐藏的文字

于 2013-01-31T14:35:14.997 回答
0

您提供的示例只是切换一个类。内容实际上一直存在(查看 .side 内部,您会找到 .readmore_con)。

.readmore_con 被简单地设置为

display: none;

单击“阅读更多”按钮后,它会在 .readmore_con div 中添加一个 .readmore_open 类。.readmore_open 的 CSS?...您猜对了:

display: block;

如果您真的想使用手风琴进行此切换,您可以简单地定义显示的初始状态:无;到您的“更多”内容,然后在手风琴的 .activate 事件期间切换它:http: //api.jqueryui.com/accordion/#event-activate

于 2013-01-31T14:36:59.530 回答