Find the closest previous brother that contains .myClass

I have a bunch <tr>, some of them contain <td>, which has class="myClass", and some do not. So it looks like something like that.

<tr>
<td class="myClass"></td>
<td></td>
</tr>

<tr>
<td></td>
<td></td>
</tr>

If I'm in <tr>, how do I go up in lines until I get to the nearest line containing td.myClass? Is there any reasonable way to do this? Now I have a while loop that checks prev (), and if it finds .myClass, it breaks.

+3
source share
3 answers
$currentTr.prevAll(':has(td.myClass)').first()
+5
source

, , . http://jsfiddle.net/H2k8m/2/
1) Td "" .
2) , .

HTML:

    <table>
        <tr>
        <td class="myClass">Hi</td>
        <td>world</td>
        </tr>

        <tr>
        <td class="myClass">1</td>
        <td class="myClass" >2</td>
        </tr>

        <tr>
        <td>3</td>
        <td>4</td>
        </tr>

        <tr>
        <td>5</td>
        <td>6</td>
        </tr>
</table>

CSS:

.color {
    background: #000;
    color: #fff;
}

table {
    cursor: pointer;
}

tr, td {
    min-width: 50px;
    border: 1px #000 solid;
    padding: 5px;
    text-align: center;
}

JQuery:

$(document).ready(function()
{
    $("table tr td").click(function() {
        if( $(this).prevAll('[class="myClass"]').length <= 0 ) {
            var parents = $(this).parent().siblings();
            for( i = $(this).parent().index(); i >= 0; i-- ) {
                parents.eq( i ).find(".myClass").last().addClass("color");
                if( parents.eq( i ).find(".myClass").length > 0) {
                    break;
                }
            }
         }
        else {
            $(this).prevAll('[class="myClass"]').first().addClass("color");
        }

    });

});
+1

, td myClass. tr, , :

var td$ = $("#myTable td.myClass");
$("#myTable td").click(function() {
    td$.removeClass("found");
    var temp$ = td$.add(this);
    var i = temp$.index(this);
    if (i > 0) {
        temp$.eq(i - 1).addClass("found");
    }
});

td myClass. jQuery (jQuery DOM ). jQuery , , , td.myClass .

jsFiddle: http://jsfiddle.net/jfriend00/XqLzb/

+1

All Articles