Удалите <p>, если он содержит определенную строку

поэтому я пытаюсь удалить некоторые p html, когда у их элементов есть это: pasdefichier on.

Я пытаюсь использовать этот код, но он не работает! Я уверен, что p был добавлен с помощью ajax. Как я могу сделать ?

$('.downloadfileexintegradedindb').removeByContent('pasdefichier');​
$('.downloadfileexintegradedindb:contains("pasdefichier")').hide();  //to hide
$('.downloadfileexintegradedindb:contains').find('p:contains("pasdefichier")').remove();

html-код:

<p class = "downloadfileexintegradedindb" id = "123456789" style = "position: absolute; top: 36px; left: 123px;">pasdefichier</p>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
276
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете сделать что-то вроде этого:

const term = 'pasdefichier';

// Select all <p> elements and loop thought them
document.querySelectorAll('p').forEach(element => {
  // Check if the current element contains content of term variable
  if (element.innerText.includes(term)) {
    // Remove current element
    element.parentElement.removeChild(element);

  }

});
<p class = "downloadfileexintegradedindb" id = "123456789" style = "position: absolute; top: 36px; left: 123px;">pasdefichier</p>

<p class = "downloadfileexintegradedindb" id = "987654321" style = "position: absolute; top: 36px; left: 123px;">stay</p>
Ответ принят как подходящий

Приведенные ниже фрагменты - это то, чего вы хотите достичь. Я использовал эти функции, чтобы заставить его работать:

  • .html(), чтобы получить содержимое элемента,
  • .includes(), чтобы проверить наличие строки внутри этого содержимого.

Обратите внимание, что я предпочитаю этот метод $('p:contains(text)'), потому что с его помощью мы легко можем добавить else.

Поскольку вы используете jQuery, я тоже использовал его в своих фрагментах. Вы, конечно, можете использовать .hide() вместо .remove(), если это лучше соответствует вашим потребностям.

  1. Если у вас только один элемент:

if ($('#123456789').html().includes('pasdefichier')) {
  console.info('Removed p!');
  $('#123456789').remove();
} else {
  // Do something else
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class = "downloadfileexintegradedindb" id = "123456789" style = "position: absolute; top: 36px; left: 123px;">pasdefichier</p>
  1. Если у вас несколько элементов:

$('.p-class').each(function(){
  if ($(this).html().includes('pasdefichier')){
    $(this).remove();
  } else {
    // Do something else
  }
});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class = "p-class">pasdefichier</p>
<p class = "p-class">fichier!</p>
<p class = "p-class">fichier!</p>
<p class = "p-class">pasdefichier</p>

Надеюсь, поможет.

Проще просто использовать jQuery contains

charlietfl 26.05.2018 17:41

Merci, cela fonctionne aléatoirement. C'est bien d'avoir des francophones sur stack!

mataka 26.05.2018 17:51

@mataka Que veux-tu dire par fonctionne aléatoirement? / Что вы имеете в виду под случайно работающий? Пожалуйста, избегайте французского, все должны понимать!

Takit Isy 26.05.2018 18:06

В вашей первой строке есть скрытый символ (см. https://www.soscisurvey.de/tools/view-chars.php), который в настоящее время дает вам SyntaxError. Когда я его удаляю, я получаю TypeError, потому что removeByContent - это undefined (возможно, это ваше дополнение). Но вы можете просто использовать вторую строку для достижения желаемого (заменив remove на hide):

$('.downloadfileexintegradedindb:contains("pasdefichier")').remove();  //to hide
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class = "downloadfileexintegradedindb" id = "123456789" style = "position: absolute; top: 36px; left: 123px;">pasdefichier</p>

из кода, который вы опубликовали, строки 2 и 3 почти верны.

Правильный синтаксис: $(':contains(text)'). см. JQuery-содержит.

Итак, есть два варианта, в зависимости от того, что вы хотите сделать. Я включил оба.

$('.downloadfileexintegradedindb').find('p:contains(pasdefichier)').remove(); // if you want to remove only p

$('.downloadfileexintegradedindb:contains(pasdefichier)').remove(); // if you want to remove the whole container
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "downloadfileexintegradedindb">
  <p>123</p>
  <p>pasdefichier</p>
</div>

<div class = "downloadfileexintegradedindb">
  <p>123</p>
  <p>abc</p>
</div>

Но у вас тоже есть внутренние кавычки (что является причиной отрицательного голоса, объясните мне это, и я с радостью уберу отрицательный голос)?

doubleOrt 26.05.2018 17:50

@doubleOrt да много

mataka 26.05.2018 17:52

@doubleOrt хорошо, ты прав, он тоже работает с кавычками.

Damian 26.05.2018 18:01

Документы API @doubleOrt предлагают использовать кавычки. Не хорошая причина для голосования против, если это следует за документацией api.jquery.com/contains-selector

charlietfl 26.05.2018 18:18

@charlietfl Я на самом деле проголосовал против, потому что в вашем примере тоже были цитаты. Теперь, когда этого не произошло, я должен снять свой голос против.

doubleOrt 26.05.2018 20:22

@doubleOrt что не так с использованием кавычек? Вы читали документы?

charlietfl 26.05.2018 20:24

@charlietfl Ну, ваш ответ подразумевал, что использование кавычек было неправильным, и в то же время вы использовали их в своем примере, поэтому я был сбит с толку.

doubleOrt 26.05.2018 20:26

@doubleOrt Я так и не ответил на вопрос. Просто комментировал, что использование кавычек в соответствии с text inside the parentheses of :contains() can be written as a bare word or surrounded by quotation marks - это нормально.

charlietfl 26.05.2018 20:27

Это то же самое. Я забыл удалить кавычки в своем примере, вот и все.

Damian 26.05.2018 20:29

@charlietfl Извините, я думал, что вы ОП. Я не думаю, что что-то не так с использованием кавычек, как видите, в примере в моем ответе тоже есть кавычки.

doubleOrt 26.05.2018 20:29

@Damianos_G Теперь я понял, извините :)

doubleOrt 26.05.2018 20:37

Другие вопросы по теме