jQuery没有隐藏div而是加载了DOM

时间:2015-10-12 20:14:46

标签: javascript jquery html

我对jQuery很新,所以请放轻松我,因为我认为这是一个简单的错误。

我有一个显示多项选择测验的网站。每个问题可以有2到4个选项。如果空白选项在问题数组中始终被编码为“###”,那么我想要做的就是隐藏包含文本“###”的div。

我有以下(simplfied)HTML布局:

<div class="row" name="row1">

 <div class="col-xs-12 jumbotron text-center" id="ans1Text" onclick="checkAnswer1()">

   Text Goes Here
</div>
</div>


<div class="row" name="row2">

 <div class="col-xs-12 jumbotron text-center" id="ans2Text" onclick="checkAnswer2()">

   Text Goes Here
</div>
</div>


<div class="row" name="row3">

 <div class="col-xs-12 jumbotron text-center" id="ans3Text" onclick="checkAnswer3()">

   Text Goes Here
</div>
</div>


<div class="row" name="row4">

 <div class="col-xs-12 jumbotron text-center" id="ans4Text" onclick="checkAnswer4()">

   Text Goes Here
</div>
</div>

在页面底部我打电话:

$(document).ready(function(){
                        setupQuiz();
                          });

然后setupQuiz拨打setupQuestion()

function setupQuestion()
{
var r = Math.random();

$('#qnum').text(questionNumber.toString() + "/" + (nQuestions-1).toString());
$('#timeRemaining').text(timePerQuestion);


$('#questionText').text(quizquestions[questionNumber-1].q);
if (r < 0.25){
    $('#ans1Text').text(quizquestions[questionNumber-1].correct);
    $('#ans2Text').text(quizquestions[questionNumber-1].incorrect1);
    $('#ans3Text').text(quizquestions[questionNumber-1].incorrect2);
    $('#ans4Text').text(quizquestions[questionNumber-1].incorrect3);
}
else if (r>=0.25 && r <0.5){
    $('#ans2Text').text(quizquestions[questionNumber-1].correct);
    $('#ans1Text').text(quizquestions[questionNumber-1].incorrect1);
    $('#ans4Text').text(quizquestions[questionNumber-1].incorrect2);
    $('#ans3Text').text(quizquestions[questionNumber-1].incorrect3);
}
else if (r>=0.5 && r < 0.75){
    $('#ans3Text').text(quizquestions[questionNumber-1].correct);
    $('#ans4Text').text(quizquestions[questionNumber-1].incorrect1);
    $('#ans2Text').text(quizquestions[questionNumber-1].incorrect2);
    $('#ans1Text').text(quizquestions[questionNumber-1].incorrect3);
}
else
{
    $('#ans4Text').text(quizquestions[questionNumber-1].correct);
    $('#ans1Text').text(quizquestions[questionNumber-1].incorrect1);
    $('#ans2Text').text(quizquestions[questionNumber-1].incorrect2);
    $('#ans3Text').text(quizquestions[questionNumber-1].incorrect3);
}

if ( $('#ans1Text').text().indexOf("###") !=-1 )
{
    $('#row1').hide(); 
    console.log("1");  
}

if ( $('#ans2Text').text().indexOf("###") !=-1 )
{
    $('#row2').hide(true); 

    console.log("2"); 
}

if ( $('#ans3Text').text().indexOf("###") !=-1)
{
    $('#row3').hide(true); 

    console.log("3"); 
}

if ( $('#ans4Text').text().indexOf("###") !=-1)
{
    $('#row4').hide(true);

    console.log("4");  
}


if(questionTimer != null)
{
    clearInterval(questionTimer);
    questionTimer = null;
}



questionTimer = setInterval(tick, 1000);

}

设置问题文本的所有代码都运行良好,控制台记录正确的数字,但正确的div永远不会被隐藏!我迷失了,我真的很感激任何帮助。

4 个答案:

答案 0 :(得分:1)

使用hide()而不是hide(true)。

jQuery正试图将其转变为&#34;时间&#34;估计隐藏。 换一种说法。它试图弄清楚你的div有多快。

要么在那里放一个像2000(2秒)的数字。 或者什么都没有hide(); (默认速度)

答案 1 :(得分:0)

也许你可以在这里使用css:

$('#row2').css("display", "none");

而不是

$('#row2').hide(true);

答案 2 :(得分:0)

你应该只能调用.hide()而不传入true。

答案 3 :(得分:0)

我用我的代码解决了问题,我不认为它喜欢使用$('#row1'),因为那只是一个名字,而不是一个id。

同时拿出隐藏的论点也有帮助,但是下次我需要另外一个来再次显示它:

if ( $('#ans1Text').text().indexOf("###") !=-1 )
{
    $('#ans1Text').hide(); 
    console.log("1");  
}
else
{
    $('#ans1Text').show();
}

if ( $('#ans2Text').text().indexOf("###") !=-1 )
{
    $('#ans2Text').hide();; 

    console.log("2"); 
}
else
{
    $('#ans2Text').show();
}

if ( $('#ans3Text').text().indexOf("###") !=-1)
{
    $('#ans3Text').hide();; 

    console.log("3"); 
}
else
{
    $('#ans3Text').show();
}

if ( $('#ans4Text').text().indexOf("###") !=-1)
{
    $('#ans4Text').hide();;

    console.log("4");  
}
else
{
    $('#ans4Text').show();
}