Javascript通过div中的元素递增?

时间:2014-09-27 13:35:08

标签: javascript jquery html dom increment

好的,我有以下HTML:

<div class="calculator-section">
    <p class="x"></p>
    <p class="y"></p>
</div>

<div class="calculator-section">
    <p class="z"></p>
    <p class="a"></p>
</div>

<div class="calculator-section">
    <p class="b"></p>
    <p class="c"></p>
</div>

我需要递增每个div并比较每个<p>所拥有的类。

我将如何做到这一点?

目前我有这个:

$('.calculator-section').each(function(i, obj) {
    $(this).$('p').each(function(i, obj) { //This bit doesn't work
        //Check classes for $(this) here?
    });
});

但我不确定该内循环该怎么做。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

p添加到初始的每个循环中,并使用循环中的className属性

$('.calculator-section p').each(function(i, obj) {
    if(this.className == "x") {
       $(this).css('background', 'green')
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="calculator-section">
    <p class="x">x</p>
    <p class="y">y</p>
</div>  

<小时/> 或者,如果您出于某种原因使用多个循环:

使用p$('p', this)等在特定部分的迭代中选择$(this).children('p')

$('.calculator-section').each(function(i, obj) {
    // $(this) = section
    $('p', this).each(function(i, obj) {     
        // $(this) = p within above section                
    });  
});

答案 1 :(得分:0)

使用单个each()代替双each()。这里的例子..

$('.calculator-section p').each(function(i, obj) {
    var className = $(this).attr('class');
    if(className == 'expected value'){
        //do something
        //return false;
    }
});

答案 2 :(得分:0)

你会得到太多结果。 <p class="x"><p>应为<p class="x"></p>(使用正斜杠表示关闭段落。

<div class="calculator-section">
    <p class="x"></p>
    <p class="y"></p>
</div>

<div class="calculator-section">
    <p class="z"></p>
    <p class="a"></p>
</div>

<div class="calculator-section">
    <p class="b"></p>
    <p class="c"></p>
</div>

一旦修复,

//you can grab the class couples this way
var results = $('.calculator-section').map(function(i, obj) {
    return $(obj).find('p').map(function(i, obj) {
        return obj.className;
    });
});

//and then do what you want with them later
results.each(function(i, obj) {
    console.log(obj[0] + ',' + obj[1]);    
});

>> x,y
>> z,a
>> b,c