#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. Это только в том случае, если в значении присутствуют определенные символы. И браузеры обрабатывают недопустимые атрибуты чисто. Даже атрибуты данных будут считаться недействительными в старых браузерах, но все равно должны работать. Тем не менее, это хорошее предложение.