Удаление элементов из элемента in memory в js

#javascript #prototypejs

#javascript #prototypejs

Вопрос:

У меня есть файл Java script, который используется в нескольких местах. Он имеет этот код:

 var newDiv = lastDiv.cloneNode(true);
  

В lastDiv есть некоторые <input> элементы, которые я не хочу клонировать. Я создал эти входные элементы с атрибутом <input copy="dont"> , чтобы я мог удалить их, используя следующий код:

 newDiv.select("input[copy=dont]").remove()
  

The prototype.js select() находит эти элементы. Но remove() не работает, в newDiv все еще есть входные элементы, которые я хотел отфильтровать. В документации прототипа указано, что он будет удален из документа, но newDiv отсутствует в документе, он находится только в памяти.

Теперь это решено: select() возвращался массив. Если бы только prototype вернул значимое сообщение об ошибке. Он возвращал список совпадающих элементов. Спасибо за ваши ответы, ребята. Будет использоваться допустимый HTML5. Теперь это работает

 newDiv.select("input[copy=dont]")[0].remove()
  

Комментарии:

1. Если вы используете атрибуты данных для HTML5, ваш HTML будет действительным. copy не является стандартным атрибутом HTML. Я бы использовал data-clonable="false" .

2. @adeneo: дайте ему отдохнуть.

3. Какую отладку вы выполнили? Вы видели ошибку в своей консоли?

4. @adeneo — вы должны использовать c # 🙂

5. Я не использую prototypejs , но здесь: newDiv.select("input[copy=dont]").invoke("remove"); . Вот демонстрация . Это вызывает метод, предоставляемый строкой для элементов в коллекции, возвращаемой из .select() .

Ответ №1:

я думаю, что это просто тип в вашем селекторе, попробуйте это:

 newDiv.select("input[copy='dont']").remove()
  

кроме того, просто предложите использовать атрибут data-copy вместо copy ex .

 <input data-copy="dont" type="text" />
  

это сохранит ваши элементы действительными в HTML5

Комментарии:

1. @cookiemonster — моя первая мысль была недопустимой, HTML испортил работу в некоторых браузерах, тогда я подумал, почему бы не попробовать использовать кавычки, необходимые в jQuery

2. @ScottSelby: кавычки на самом деле не нужны в jQuery. Это только в том случае, если в значении присутствуют определенные символы. И браузеры обрабатывают недопустимые атрибуты чисто. Даже атрибуты данных будут считаться недействительными в старых браузерах, но все равно должны работать. Тем не менее, это хорошее предложение.