我的'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();
答案 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();
答案 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();
答案 2 :(得分:0)
我同意确实需要进入循环内部,但是你需要进一步细化jquery select语句。
我会使用像
这样的东西 $(theElements).each(function(){
if(this.innerHTML == "Value B"){
$(this).parent().appaend('<p>New value</p>');
$(this).remove();
}
});