将元素追加到数组的单个元素

时间:2015-10-22 20:04:47

标签: javascript append

我的'p'元素值被附加到'review-comment-wrap'块时出现问题。我认为问题可能是在我的append函数中,'p'元素被附加到所有review-comment-wrap元素。如何仅添加具有值B的元素的'review-comment-wrap'块?

<div class="reviewer-meta">
    <div class="author-attribute">Value A</div>
    <div class="author-attribute">Value B</div>
</div>

<div class="review-comment-wrap">some value</div>
/** add appended value here only **/

<div class="reviewer-meta">
    <div class="author-attribute">Value A</div>
</div>

<div class="review-comment-wrap">some value</div>


function runProgram(){
    var theElements = $('.reviewer-meta').find('.author-attribute');

    $(theElements).each(function(){
        if(this.innerHTML == "Value B"){
            $(this).remove();   
        }
    });
    $('.review-comment-wrap').append('<p>New value</p>');
}
runProgram();

3 个答案:

答案 0 :(得分:1)

获取元素&#34; review-comment-wrap&#34;在reviewer-meta中,您的检查结果为true,您可以使用&#39; next()&#39;函数应用于父元素。

function runProgram(){
var theElements = $('.reviewer-meta').find('.author-attribute');

$(theElements).each(function(){
   if(this.innerHTML == "Value B"){
       $(this).parent().next('.review-comment-wrap').append('<p>New value</p>');
    $(this).remove();   
}
});

}
runProgram();

更多信息:https://api.jquery.com/next/

答案 1 :(得分:1)

您需要将附加内容移动到if语句中并引用该组元素。

function runProgram(){
    var theElements = $('.reviewer-meta').find('.author-attribute');

    $(theElements).each(function(){
        if(this.innerHTML == "Value B"){
            $(this).siblings('.review-comment-wrap').append('<p>New value</p>');
            $(this).remove();
        }
    });
}

http://jsfiddle.net/daCrosby/a0orn0q7/

如果您想简化一点,您也可以使用filter功能。这允许您完全跳过循环和if语句。

function runProgram(){
    var element = $('.reviewer-meta').find('.author-attribute')
                     .filter( function(){ return $(this).text() == "Value B"; });

    element.siblings('.review-comment-wrap').append('<p>New value</p>');
    element.remove();
}
runProgram();

http://jsfiddle.net/daCrosby/a0orn0q7/1/

答案 2 :(得分:0)

我同意确实需要进入循环内部,但是你需要进一步细化jquery select语句。

我会使用像

这样的东西

$(theElements).each(function(){ if(this.innerHTML == "Value B"){ $(this).parent().appaend('<p>New value</p>'); $(this).remove();
} });