Ответ 1
Я думаю, что вы хотите использовать селектор not. Как это..
$(".container").not(".container .container")
В качестве альтернативы вы можете использовать селектор children, чтобы дети находились на одном уровне. Что бы исключить вложенные div.
Чтобы быть немного более явным, я думаю, что вы захотите использовать селектор после использования "find". Вот так:
$(".container").find(".element").not($(".container .container .element"))
Вы можете передать функцию, чтобы нет, поэтому вы можете заставить эту функцию посмотреть на родителей каждого элемента, чтобы увидеть, вложен ли он внутри элемента с тем же классом.
removeIfNested = function(index) {
// this is the corrent DOM element
var $this = $(this),
return_value = false;
$.each($this.attr('class').split(/\s+/), function(index) {
if ($this.parents("." + this).length > 0) {
return_value = default_value || true;
}
});
return return_value;
}
$(".container").find(".element").not(removeIfNested);
Если вы могли бы добавить класс во вложенный контейнер, это было бы идеально, тогда оно просто:
$(".container").find(".element").not($(".nested .element"))
Предполагая, что вы добавили класс "вложенный" в свой внутренний контейнер div.