Метод .not()
принимает либо селектор, либо объект, с помощью которого можно фильтровать.
Метод .contents()
возвращает объект jQuery, содержащий дочерние элементы и текстовые узлы элемента.
Когда селектор используется как аргумент для .not()
, он удаляет выбранные элементы, а также все текстовые узлы.
Когда объект используется как аргумент для .not()
, он удаляет объект, но не текстовые узлы.
Пример:
<p>This is a <span id="aSpan">paragraph</span> tag</p>
$("p").contents().not("span");
> []
Но!
var $sp = $("p span");
$("p").contents().not($sp);
> ["This is a ", " tag"]
и
var sp = document.getElementById("aSpan");
$("p").contents().not(sp);
> ["This is a ", " tag"]
Почему текстовые узлы выбраны селектором "span" (или любым другим селектором), но не экземпляром объекта?