JQuery需要单击两次才能启动脚本

时间:2014-02-14 20:44:44

标签: javascript jquery html

我有一个show / hide div脚本,当用户单击以显示div时,它还会记录信息。日志工作正常,div显示/隐藏,但只有在第二次单击时,它才会在添加日志功能之前执行此操作。 我是一个完整的JS / JQuery菜鸟所以请解释我出错的地方!

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
 <script type="text/javascript">
function showAnswer(whichLayer,id,lang){
  var whichLayer, id, lang;
  if(document.getElementById(whichLayer).style.display =="none"){ 
     document.getElementById(whichLayer).style.display = "block";
  $.post("../../logclick.php", {id: id, lang: lang}); 
  }else{
     document.getElementById(whichLayer).style.display = "none";
  }
}
</script>

编辑:调用该函数的代码。

<div class="question">
    <a href="javascript:showAnswer('2111692','1692','en')">Click here</a>
</div>
<div id="2111692" class="answer">Answer shows here.</div>

样式表:

 .answer {
 clear: both;
 margin-left: 30px;
 display: none;
 }

1 个答案:

答案 0 :(得分:0)

由于您正在使用(和标记)jQuery,我们可以.is(':hidden')替换style.display == 'none'

function showAnswer(whichLayer, id, lang) {
    if ($('#' + whichLayer).is(':hidden')) {
        $('#' + whichLayer).show();
        $.post("../../logclick.php", {
            id: id,
            lang: lang
        });
    } else {
        $('#' + whichLayer).hide();
    }
}

您需要点击两次,因为第一次style.display == 'none'评估为false,因此请转到else并将style.display实际设置为none