我对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永远不会被隐藏!我迷失了,我真的很感激任何帮助。
答案 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();
}