Можно ли взять JS var, представляющий элемент, который был добавлен в несколько мест, и удалить его с помощью var?

#javascript #jquery

#javascript #jquery

Вопрос:

Посмотрите на эту скрипку. У меня есть info переменная, которую я могу легко добавить в 2 места. Но я бы хотел также легко удалить его из обоих мест, не делая чего-то более сложного, например $("p").remove()

Я знаю, что это кажется супер не сложным, но в производстве это сложнее. Я всегда работаю с info var, поэтому было бы здорово, если бы был какой-то способ сказать info.removeInAllInstances() или что-то в этом роде

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

1. 1. пожалуйста, разместите свой код здесь, а не отправляйте ссылку (ссылка в порядке, просто добавьте код и здесь. 2. почему бы просто не присвоить этому p классу имя, а затем сослаться на него для удаления?

2. Поскольку jQuery клонирует HTML-код внутри цикла по всем .row элементам, $info он будет ссылаться только на последний добавленный элемент — вот почему вы видите текущее поведение. Чтобы сделать то, что вам требуется, вам нужно будет выбрать все содержимое в DOM после append() завершения, т.Е. $('p').remove()

3. @RoryMcCrossan чтобы уточнить, вы хотите сказать, что когда я это делаю $(".row").append(info) , info var клонируется в каждом .append() , это правильно? и после info этого ссылается только на последний элемент?

4. @Kinglish Я могу, я просто специально пытаюсь использовать info переменную

Ответ №1:

Я не мастер в jQuery, но, по-видимому, remove() удаляет все экземпляры чего-либо. Вы можете отфильтровать по определенному классу и удалить абзацы.

Посмотрите этот пример:

 <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>remove demo</title>
  <style>
  p {
    background: yellow;
    margin: 6px 0;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p>Hello</p>
how are
<p>you?</p>
<button>Call remove() on paragraphs</button>
 
<script>
$( "button" ).click(function() {
  $( "p" ).remove();
});
</script>
 
</body>
</html>
 

Я получаю это на https://api.jquery.com/remove /.

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

1. скрипка, которую я использовал .remove() , и она не работала =/

2. попробуйте удалить по имени класса, я сделал это и работает info = $ («<p> Введите важную информацию </p>») info2 = $ («<p> Введите важную информацию </p>») // добавить поле ввода как в корзину, так и в каталог $ («.row»).append(info) $(«.row»).append(info2) // удалить ввод в каталоге, должен автоматически удаляться в корзине, но не удаляет, только удаляет в каталоге $ («p»).remove() попробуйте сделать это с помощью classname,в этом случае я использую tagname . послушайте, я не специалист в jquery, поэтому я не могу помочь вам наилучшим образом, ха-ха

3. да, я понимаю, извините, я только что упомянул в вопросе, что я пытаюсь конкретно использовать созданный мной JS info var, а не искать по классу. все в порядке, я не думаю, что это возможно