2

Why is this code appending the object twice for each element?

$('input[data-type="answer"]').each(function (index, input) {
    var name = $(input).attr('name');
    var value = $(input).val();
    $("#QuizQuestion").append('<div id="QuizQuestionHeadline"></div><div class="control-group"><label class="radio"><input type="radio" class="input-fluid" value="' + value + '" />' + value + '</label></div>');
});

Thanks!


Realized I published wrong code, here it is:

Jquery to create the answers:

var newAnswerAlt = "appendAnswerAltRadio" + i++;
    $("<div><div class='controls'><input type='text' class='answerAltRadiobtn' data-type='answer' class='input-fluid' name='txtAnswer"+ n++ +"'> <label class='checkbox'><input type='checkbox' id='QuizCheckbox"+ c++ +"'> Correct Answer</label></div></div>").attr({id: newAnswerAlt, class: ''}).prependTo(".NewQuizAnswersGroup").hide().fadeIn('slow');
    });

Jquery to get the attributes from the created answers and append them to another element:

    $('input[data-type="answer"]').each(function(index, input){
        var name = $(input).attr('name');
        var value = $(input).val();     
        var question = "txtQuestion1";      
        $("#QuizQuestion").append('<div id="QuizQuestionHeadline"></div><div class="control-group"><label class="radio"><input type="radio" class="input-fluid" name="' + question + '" value="'+value+'" />'+value+'</label></div>');          
        });

    var NewQuizQuestion = $("#NewQuizQuestion").val();
    $("#QuizQuestionHeadline").append("<legend>"+NewQuizQuestion+"</legend>");  

     $('input[data-type="UserDetails"]').each(function(index, input){
    var name = $(input).attr('name');
    var label = $("label[for='"+name+"']").text()
    var value = $(input).is(":checked");
    if($(input).is(":checked")){
        $("#formAlts").append('<div id="formHeader"></div><div class="control-group"><label>'+label+'</label><div class="controls"><input type="text" class="input-fluid" name="' + name + '" /></div></div>');
    }
    });

    var formHeader = "Fill out form";
    $("#formHeader").append("<legend>"+formHeader+"</legend>");

    var terms = "Accept Terms & Conditions";
    $("#terms").append("<div class='control-group'><label class='checkbox'><input type='checkbox' name='txtTerms'>"+terms+"</label></div>");    

The second call for "'input[data-type="UserDetails"]'" works fine but not for "'input[data-type="answer"]'".

Can't really understand it!

4

0 に答える 0