C'è un selettore / metodo di jQuery per trovare un elemento di appartenenza specifico n livelli fino?

StackOverflow https://stackoverflow.com/questions/699027

Domanda

Si consideri il seguente codice HTML. Se ho un riferimento JSON all'elemento , come posso ottenere un riferimento all'elemento esterno in entrambi i casi

<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>

So che potrei caso speciale ogni condizione, ma sono più interessato "tuttavia profonda vi capita di essere, salire sull'albero fino a trovare elemento X" soluzione stile. Qualcosa di simile, ma più come jQuery / meno 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);
    }
};  

Lo so circa il metodo parent (espressione), ma da quello che ho visto è permette di filtrare i genitori di un livello alto e non salire sull'albero fino a trovare expr (mi piacerebbe esempio di codice dimostra me sbagliato)

È stato utile?

Soluzione

La funzione genitori fa ciò che si vuole:

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

Altri suggerimenti

Inoltre, se si utilizza jQuery 1.3+ è possibile utilizzare il metodo più vicino

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

Non jQuery ma questa opzione funziona molto meglio

node.contains (otherNode)

  

I Node.contains () restituisce un valore booleano che indica se   un nodo è un discendente di un dato nodo o non

https://developer.mozilla.org/en/docs / Web / API / nodo / contiene

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top