jQuery show/hide/toggle工作,但不能保持原样 - 它恢复到原始状态

Ank*_*kur 4 jquery toggle show-hide

我尝试使用jQuery显示/隐藏FAQ问题的答案.我们的想法是列出所有问题,并且只有当用户想要查看他们点击问题(看起来像链接)的答案时,才能看到答案.

除了单击单击后答案恢复到原始状态外,它的工作方式很有效.在这种情况下,这意味着当我单击问题以显示答案时,它会显示然后在下一个瞬间消失,而不是保持可见,直到再次单击以将其切换为隐藏.

我已粘贴以下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="jquery-1.3.2.min.js" ></script>
<script>
    $(document).ready(function() {
        $('div.showhide,#answer').hide();
        $('#question').click(function(){
        $('div.showhide,#answer').toggle();
       });
  });
</script>
</head>
<body>
<p><a href="" id="question" name="question">Question</a></p><div id="answer"     name="answer">Answer</div></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

pei*_*rix 5

我认为可能存在问题<a href="">...如果你删除了href属性(因为它不需要它(如果你想要合适的光标,使用CSS)),它会起作用,至少它对我有用.

<a href="">触发onClick事件并刷新页面时,可以hrefhref="#"或替换空属性href="javascript:void(0)来运行js事件.


FWH*_*FWH 2

好吧,当您单击该链接时,会触发 onClick 事件,紧接着,页面就会重新加载,因为该链接指向同一页面(href=""),并且浏览器会跟踪该链接。

当页面重新加载时,它会恢复到原始状态,隐藏答案。

为了避免这种情况,您需要在点击事件触发的函数上返回 false,这样浏览器就不会跟踪该链接。

总而言之,使您的代码如下所示:

$('#question').click(function(){
    $('div.showhide,#answer').toggle();
      return false;
   });
Run Code Online (Sandbox Code Playgroud)

或者,您可以使链接指向 JavaScript 函数。然后,您可以删除上面的代码,将其替换为标准的 javascript 函数:

function showAnswer()
{
    $('div.showhide,#answer').toggle();
}
Run Code Online (Sandbox Code Playgroud)

你的链接将变成:

<a id="question" href="javascript:showAnswer();">
Run Code Online (Sandbox Code Playgroud)

但请记住,不建议这样做,因为禁用了 javascript 的客户端将无法看到答案。您应该始终有一个不使用 javascript 的页面,然后添加 javascript 以使其更可用。