Проблемы с $ .remove () в jQuery - PullRequest
       39

Проблемы с $ .remove () в jQuery

3 голосов
/ 25 августа 2011

Проще говоря ...

У меня есть элемент clone.Это div с некоторыми другими тегами, сохраненными в нем.В нем также есть .x.

Мне нужно удалить его, а затем применить этот измененный элемент к другому элементу.

К сожалению, это не работает.Удалить не удалось или что-то, но .x все еще в нем.

clone = subtitle.clone(); // Works!
no_label = clone.remove('.x'); // This fails.
more_subtitles.append(no_label); // Its appends no_label, but it still contains .x element.

Ответы [ 5 ]

2 голосов
/ 25 августа 2011

Это потому, что remove () удаляет соответствующие элементы из DOM. Даже если вы передаете селектор, он используется только для фильтрации этих элементов. В вашем коде clone соответствует одному элементу (клонированному субтитру), который не предоставляет класс x.

Вы можете использовать find () для соответствия элементу .x:

more_subtitles.append(subtitle.clone().find(".x").remove().end());
1 голос
/ 25 августа 2011

Вы можете сделать это так:

clone = subtitle.clone();
no_label = clone.find('.x').detach();
more_subtitles.append(clone);

Обратите внимание, что вы можете использовать .detach() вместо .remove(). Это сохранит все метаданные, прикрепленные к элементу.

1 голос
/ 25 августа 2011

Собираетесь ли вы удалить элемент .x из клона?

 clone.find('.x').remove()
1 голос
/ 25 августа 2011

remove () - для удаления элементов.Для удаления класса необходимо использовать removeClass (className).

0 голосов
/ 25 августа 2011

Вы пытаетесь удалить класс из клона? Если да, тогда используйте removeClass следующим образом:

clone.removeClass('x');
...