¿Hay un selector / método de jQuery para encontrar un elemento de n niveles matriz específica para arriba?

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

Pregunta

Considere el siguiente código HTML. Si tengo una referencia JSON para el elemento , ¿cómo puedo obtener una referencia al elemento exterior en ambos casos

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

Sé que podría caso especial cada condición, pero estoy más interesado "por profunda que resultan ser, subir al árbol hasta que encuentre el elemento X" solución estilo. Algo como esto, pero más como jQuery / menos verbosa

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);
    }
};  

Yo sé sobre el método parent (expr), pero por lo que he visto es que permite filtrar los padres en un nivel superior y no subir al árbol hasta que encuentre expr (Me encantaría ejemplo de código que demuestra que estoy equivocado)

¿Fue útil?

Solución

La función padres hace lo que quiere:

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

Otros consejos

Además, si usted está usando jQuery 1.3+ puede utilizar el método más cercano

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

No jQuery, pero esta opción funciona mucho mejor

node.contains (otherNode)

  

Los Node.contains () devuelve un valor booleano que indica si   un nodo es un descendiente de un nodo dado o no

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top