选择页面上具有特定类的最后一个元素

Select last element on page with specific class

本文关键字:最后一个 元素 选择      更新时间:2023-09-26

我正在进行一个quizz测试。我想用一个特定的类选择页面上的最后一个元素,这样当用户点击它时,就会出现quizz的结果。现在我通过添加一个额外的类来完成这项工作,但我想知道是否有一种方法可以在不使用类的情况下遍历文档,这样无论有多少问题被添加到quizz中,当点击最后一个元素时,函数都会被触发。我在这里和这里尝试了建议的解决方案,但似乎不起作用。感谢

我为它创建了以下代码笔

    //get total of questions
var $questionNumber = $('h2').length;
console.log($questionNumber);
//caching final score
var $totalScore=0;
$('li').click(function(){
    //caching variables
    var $parent = $(this).parent();
    var $span = $(this).find('.fa');
    //deactivate options on click
     $parent.find('li').off("click");
    //check for .correct class
        //if yes
        if($(this).hasClass('correct')){
            //add .correctAnswer class
            $(this).addClass('correctAnswer');
            //find next span and change icon
            $span.removeClass('fa fa-square-o').addClass('fa fa-check-square-o');
            //reduce opacity of siblings
            $(this).siblings().addClass('fade');
            //show answer
            var $answerReveal= $parent.next('.answerReveal').show();
            var $toShowCorrect = $answerReveal.find('.quizzAnswerC');
            var $toShowFalse = $answerReveal.find('.quizzAnswerF');
            $toShowCorrect.show();
            $toShowFalse.remove();
            //add 1 to total score
            $totalScore+=1;
            //console.log($totalScore);
        }else{
            //add .wrongAnswer class
            $(this).addClass('wrongAnswer').addClass('fade');
            //change icon
            $span.removeClass('fa fa-square-o').addClass('fa fa-check-square-o');
            //reduce opacity of its siblings
            $(this).siblings().addClass('fade');
            //show wrong Message
            var $answerReveal= $parent.next('.answerReveal').show();
            var $toShowCorrect = $answerReveal.find('.quizzAnswerC');
            var $toShowFalse = $answerReveal.find('.quizzAnswerF');
            $toShowCorrect.remove();
            $toShowFalse.show();
            //locate correct and highlight
            $parent.find('.correct').addClass('correctAnswer');
        };
});//end click function
//print Results
function printResult(){
    var resultText = '<p>';
    if ($totalScore === $questionNumber){
        resultText+='You got '+ $totalScore+ ' out of '+$questionNumber+'! </p>';
        $('.resultContainer').append(resultText);
        $('#halfText').append('<p>This is awesome!</p>');
        $('#halfImage').append('<img src="http://placehold.it/350x150" width="100%"><img>');
    }else if($totalScore>=3 && $totalScore < $questionNumber){
        resultText+='You got '+ $totalScore+ ' out of '+$questionNumber+'! </p>';
        $('.resultContainer').append(resultText);
        $('#halfText').append('<p>So and so...better luck next time</p>');
        $('#halfImage').append('<img src="http://placehold.it/350x150" width="100%"><img>');
    }else if ($totalScore<3){
        resultText+='You got '+ $totalScore+ ' out of '+$questionNumber+' </p>';
        $('.resultContainer').append(resultText);
        $('#halfText').append('<p>No..no...no...you have to try harder</p>');
        $('#halfImage').append('<img src="http://placehold.it/350x150" width="100%"><img>');
    }
};//end function
//final score
$('li.last').click(function(){
    //show result after last li is clicked
    var $height = $('.finalResult').height();
        printResult();
        console.log($totalScore)
        $('.finalResult').show();
        $('html, body').animate({ 
       scrollTop: $(document).height()-$height}, 
       1400);   
});

使用jQuery:很容易获得给定类的最后一个元素

$('selector').last().click(...);

您可以使用选择类的最后一个元素

  $( ".classname:last-child" ).click(function(){});