2013-02-15 59 views
0

我有一个小的帮助,人们可以点击一个链接的问题上,答案似乎很好,使用jQuery slideToggle()jQuery的滑块隐藏在第一:回退的人没有JavaScript

答案默认是隐藏的,你必须点击他们,使他们出现。 我不想在页面加载时有初始幻灯片。

的问题是,人们没有JavaScript无法做出答案出现。为了让这些人看到他们,他们应该是直接可见的。

这是可能的,如果我在当页面加载的答案滑动,但我找到解决办法不雅。任何想法如何保持我的解决方案?

我做了一个的jsfiddle这里:http://jsfiddle.net/s5HNd/3/

我的代码:

HTML:

<div> 
<ul class="faqquestions"> 
    <li> 
     <span class="faqlink">First Question</span> 
     <div class="faqreponse">First answer</div> 
    </li> 
    <li> 
     <span class="faqlink">Second question</span> 
     <div class="faqreponse">Second answer</div> 
    </li> 
</ul> 
</div> 

CSS:

ul.faqquestions li { cursor: pointer; } 
div.faqreponse { overflow: hidden; } 

的JavaScript:

$(document).ready(function() { 
    'use strict'; 
    $("ul.faqquestions li").each(function() { 
     var tis = $(this), state = false, answer = 
      tis.children(".faqreponse").hide().css('height', 'auto').slideUp(); 

     $(this).children(".faqlink").click(function() { 
      state = !state; 
      answer.slideToggle(state); 
     }); 
    }); 
}); 
+0

总是有'noscript'标签? – adeneo 2013-02-15 20:18:35

+0

@adeneo你是对的,但我不知道如何使用它,而不必输入两次答案:一旦进入隐藏div,一旦进入'noscript'标签。 – 2013-02-15 20:20:20

+0

在这一点上,我甚至不担心没有JavaScript的人。它是当今网络体验中不可分割的一部分。我知道“进步增强”仍然在学校教授,但总的来说,我发现实际开发社区几乎不担心js被禁用等事情。除此之外,您采取的方法没有任何问题。 – 2013-02-15 20:23:32

回答

1

随着this question我发现noscript标签可以是,但在head,这是有效的HTML5。此外,样式可以写在里面!

因此,解决办法是添加了head标签页之间的这种代码:

<noscript> 
<style> 
    div.faqreponse { 
     height: auto; 
     overflow: visible; 
    } 
</style> 
</noscript> 
0

(加载每个答案元素时,甚至),你可以在默认情况下可见的答案,并在页面加载时,您可以隐藏通过JavaScript的答案(您可能需要使用.slideToggle(0)这应该将它们立即关闭)。这样,那些使用JavaScript的人仍然可以打开/关闭答案,但是由于没有被关闭,他们会显示给非JS用户。

不可否认,因为你必须要等到事情被加载,这可能不会是JavaScript的用户赏心悦目的(这是广大网民在那里)。我会仔细权衡这个建议noscript。你期望有很大一部分观众有JS被禁用吗?

+0

我不认为很多人访问我的网站没有JS,但常见问题解答是唯一有问题的页面。你有没有想法如何使用'noscript'而不输入两次答案? – 2013-02-15 20:33:14

+0

我认为如果浏览器在启用JavaScript的情况下加载,'noscript'标签将保留在您的标记中而不可见。也许你可以编写一个简短的函数,将文本复制出来并放入JavaScript用户的滑动回答元素中?这样,你的答案只能在'noscript'标签中输入,但会显示给JS用户。当然,它们会被复制到渲染的标记中,但人们通常不会关心渲染标记,只要它看起来不错(并且不像表格布局:P)。 – ajp15243 2013-02-15 20:54:47

+1

其实你可以在'noscript'标签内写入样式,它可以放在'head'里面,所以它解决了这个问题(请参阅我的回答):) – 2013-02-15 22:55:00