Я думаю, что вы хотите использовать селектор , а не . Вот так ..
$(".container").not(".container .container")
Кроме того, вы можете использовать селектор children , чтобы получить детей с одного уровня глубины. Что исключило бы вложенные div.
Чтобы быть немного более явным, я думаю, что вы захотите использовать неселектор после того, как вы используете 'find'. Как это:
$(".container").find(".element").not($(".container .container .element"))
Вы можете передать функцию not, чтобы эта функция могла проверять родительские элементы каждого элемента на соответствие, чтобы определить, вложена ли она в элемент с тем же классом.
http://jsfiddle.net/QXfs2/6/
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.