поэтому я пытаюсь удалить некоторые 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>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать что-то вроде этого:
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(), если это лучше соответствует вашим потребностям.
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>$('.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>Надеюсь, поможет.
Merci, cela fonctionne aléatoirement. C'est bien d'avoir des francophones sur stack!
@mataka Que veux-tu dire par fonctionne aléatoirement? / Что вы имеете в виду под случайно работающий? Пожалуйста, избегайте французского, все должны понимать!
В вашей первой строке есть скрытый символ (см. 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 да много
@doubleOrt хорошо, ты прав, он тоже работает с кавычками.
Документы API @doubleOrt предлагают использовать кавычки. Не хорошая причина для голосования против, если это следует за документацией api.jquery.com/contains-selector
@charlietfl Я на самом деле проголосовал против, потому что в вашем примере тоже были цитаты. Теперь, когда этого не произошло, я должен снять свой голос против.
@doubleOrt что не так с использованием кавычек? Вы читали документы?
@charlietfl Ну, ваш ответ подразумевал, что использование кавычек было неправильным, и в то же время вы использовали их в своем примере, поэтому я был сбит с толку.
@doubleOrt Я так и не ответил на вопрос. Просто комментировал, что использование кавычек в соответствии с text inside the parentheses of :contains() can be written as a bare word or surrounded by quotation marks - это нормально.
Это то же самое. Я забыл удалить кавычки в своем примере, вот и все.
@charlietfl Извините, я думал, что вы ОП. Я не думаю, что что-то не так с использованием кавычек, как видите, в примере в моем ответе тоже есть кавычки.
@Damianos_G Теперь я понял, извините :)
Проще просто использовать jQuery
contains