使用jquery定位父对象

时间:2014-02-25 06:37:39

标签: javascript jquery html css

我必须失去理智,因为这么简单的事情无效:http://jsfiddle.net/vB7Nd/

我正在尝试通过列表在循环中累加项目成本,并将价格附加到标题中的标题标记,但我似乎无法定位它:

HTML结构:

<div id="holder"> 
<div class="container">    
<span class="title1" style="border: 1px solid green;">Total:</span>   
<ul>
<li cost="2" type="clothes">Car</li>
<li cost="5" type="clothes">Hat</li>
</ul>
</div>
<div class="container">    
<span class="title1" style="border: 1px solid green;">Total:</span>   
<ul>
<li cost="4" type="product">Coffee</li>
<li cost="4" type="product">Milk</li>
</ul>
</div>

</div>

JS

    $('#holder ul').each(function(index, value) { 
    var cost = 0;
    $(this).children().each(function(index,value) {

    var classification = $(this).attr('type'); 
    switch(classification) {

    case 'clothes':
    console.log(parseInt($(this).attr('cost')));
    cost +=  parseInt($(this).attr('cost')); 
    //this line does not work:
    $(this).parents('.container').closest('title1').css('border','1px solid red');
     //neither does this:
    $(this).parent().parent().find('title1').append(cost);
    break;
    }
    });

    console.log('cost is' +cost);
});

2 个答案:

答案 0 :(得分:4)

从我所看到的,它可以像

一样简单
$('#holder .container').each(function (index, value) {
    var total = 0;
    $(this).find('li').each(function () {
        total += +$(this).attr('cost') || 0;
    })
    $(this).find('.title1').append(total)
})

演示:Fiddle

注意:我使用了一元加运算符将成本的字符串值转换为数字,而不是使用parseInt()

答案 1 :(得分:0)

您在find.use中缺少类选择器:

$(this).parent().parent().find('.title1').append(cost);

<强> Fiddle Demo