如何使用jQuery在动态生成的scala-template列表中查找嵌套元素?

时间:2015-05-19 09:37:33

标签: javascript jquery scala

我有一些董事会可以提出问题并为他们写答案。

这就是它的样子: Example

首先是问题,然后是答案。你可以向上/下调每个Q / A,所以他们都有一个分数。

使用jQuery脚本,您可以更改问题分数的值,但它无法正常工作。 当我在问题上点击upvote时,图片中示例的所有(!)分数变为“76454”......基本上(Q / As连接的所有分数)+ 1。

答案的上/下投票工作正常。 我认为投票核心span class="num"可能存在问题,但我不知道如何选择嵌套答案而不是问题,反之亦然。怎么办呢?

我的观点类:

<div class="panel panel-default">
    <div class="panel-heading">
        <h3 class="panel-title">Frage- / Antwort-Teil</h3>
    </div>
    <div class="panel-body">
        <ul class="list-group">

    @for(question <- questionList){

    <!-- Questions -->
    <li class="list-group-item" >
        <button type="button" class="btn btn-default"  id="upvoteButton" 
            value="voteUp" style="width: 30px; height: 30px; text-align: center; vertical-align: center;">
            <span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>
        </button>

        <span class="num" id="@question.questionID">@question.voteScore</span>

        <button type="button" class="btn btn-default" id="downvoteButton" 
            value="voteDown" style="width: 30px; height: 30px; text-align: center;">
            <span class="glyphicon glyphicon-arrow-down" aria-hidden="true"></span>
        </button>
        (...)

    <!-- Answers -->
    <ul class="list-group" style="margin-left:20px" >
        @for(answer <- answerList){
            @if(question.questionID == answer.questionID){

            <li class="list-group-item" > 
                <button type="button" class="btn btn-default answerTest" id="upvoteButton" 
                    value="voteUp" style="width: 30px; height: 30px; text-align: center;">
                    <span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>
                </button>

                <span class="num" id="@question.questionID">@answer.voteScore</span>
                (...)

我的jQuery脚本:

$(document).ready(function(){
    $(".btn-default").click(function(){
        if( $(this).val() == 'voteUp'){

            $(this).html( "<span class='glyphicon glyphicon-arrow-up' aria-hidden='true' style='color:orange'></span>" );

            var currentScore = $(this).parent('li').find('.num').text();
            $(this).parent('li').find('.num').html(parseInt(currentScore) + 1);

            var currentID = $(this).parent('li').find('.num').attr('id');
            (...)   

1 个答案:

答案 0 :(得分:1)

您需要找到.num的直接子li,而不是所有后代.num。使用子选择器:

$(this).parent('li').find('> .num')