Рассмотрим следующий HTML. Если у меня есть ссылка JSON на элемент
<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>
Я знаю, что я мог бы в каждом конкретном случае осознать каждое условие, но меня больше интересует, "как бы глубоко вы ни оказались, поднимайтесь по дереву, пока не найдете элемент X", стилевое решение. Примерно так, но более jQuery вроде / менее-многословный
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);
}
};
Я знаю о методе parent (expr), но из того, что я видел, позволяет фильтровать родителей на один уровень вверх и НЕ лазить по дереву, пока вы не найдете expr (я хотел бы, чтобы пример кода доказывал меня неправильно) *