it-swarm.com.de

Gibt es eine jQuery-Auswahl/-Methode, um ein bestimmtes übergeordnetes Element in Stufen zu finden?

Betrachten Sie das folgende HTML. Wenn ich einen JSON-Verweis auf das <button> -Element habe, wie kann ich in beiden Fällen einen Verweis auf das äußere <tr> -Element erhalten

<table id="my-table">
    <tr>
        <td>
            <button>Foo</button>
        </td>
        <td>
            <div>
                <button>Bar</button>
            </div>
        </td>
    </tr>
</table>

<script type="text/js">
    $('#table button').click(function(){
        //$(this).parent().parent() will work for the first row
        //$(this).parent().parent().parent() will work for the second row
        //is there a selector or some magic json one liner that will climb
        //the DOM tree until it hits a TR, or do I have to code this myself
        //each time?            
        //$(this).????
    });
</script>

Ich weiß, ich könnte jede Situation speziell behandeln, aber ich bin mehr daran interessiert, "so tief Sie sich auch befinden, klettern Sie auf den Baum, bis Sie Element X" finden. So etwas, aber mehr jQuery wie/less-verbose

var climb = function(node, str_rule){
    if($(node).is(str_rule)){
        return node;
    }
    else if($(node).is('body')){
        return false;
    }
    else{
        return climb(node.parentNode, str_rule);
    }
};  

Ich weiß über die Elternmethode (expr) Bescheid, aber aus dem, was ich gesehen habe, können Sie Eltern eine Ebene nach oben filtern und NICHT den Baum hochklettern, bis Sie expr finden (ich würde es lieben, wenn das Codebeispiel mich falsch beweist).

48
Alan Storm

Die Eltern Funktion macht, was Sie wollen:

$(this).parents("tr:first");
93
Seb

Wenn Sie jQuery 1.3+ verwenden, können Sie auch die Methode latest verwenden

$(this).closest("tr");
43
bendewey

nicht jQuery, aber diese Option funktioniert viel besser

node.contains (otherNode) 

Die Methode Node.contains () gibt einen booleschen Wert zurück, der angibt, ob Ein Knoten ist ein Nachkomme eines bestimmten Knotens oder nicht

https://developer.mozilla.org/de/docs/Web/API/Node/contains

0
zloctb