#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
У меня есть этот HTML-код:
<div class="first div">
<div class="second">
<div class="title">Hi</div>
<div class="test-icon" style="background-image: url(https://1.jpg);"></div>
</div>
</div>
<div class="first div">
<div class="second">
<div class="title">Hi</div>
<div class="test-icon" style="background-image: url(https://12.jpg);"></div>
</div>
</div>
<div class="first div">
<div class="second">
<div class="title">Hi</div>
<div class="test-icon" style="background-image: url(https://123.jpg);"></div>
</div>
</div>
<div class="first div">
<div class="second">
<div class="title">Hi</div>
<div class="test-icon" style="background-image: url(https://good.jpg);"></div>
</div>
</div>
Возможно ли удалить все элементы с классом «first div», если фоновое изображение не соответствует: url(https://good.jpg);
? таким образом, окончательный ответ будет:
<div class="first div">
<div class="second">
<div class="title">Hi</div>
<div class="test-icon" style="background-image: url(https://good.jpg);"></div>
</div>
</div>
Я был бы признателен за любую помощь, спасибо!
Комментарии:
1. Можем ли мы увидеть ваш Ajax JS? Вам не нужно «удалять» html, просто выберите тот, который вам нужен.
Ответ №1:
Вот РАБОЧАЯ СКРИПКА вашего примера:
$('.first').find('.test-icon').each(function(){
if($(this).css('background-image').indexOf("good") == -1){
$(this).closest('.first').remove();
}
});
Проверьте FIDDLE, чтобы добавить несколько изображений
$('.first').find('.test-icon').each(function(){
if($(this).css('background-image').indexOf("good.jpg") == -1 amp;amp;
$(this).css('background-image').indexOf("good1.jpg") == -1 amp;amp;
$(this).css('background-image').indexOf("good2.jpg") == -1){
console.log($(this).closest('.first').remove());
}
});
Комментарии:
1. Большое вам спасибо! Это действительно работает, большое вам спасибо! В этот скрипт можно добавить несколько хороших изображений:
2. @AlexandruVorobchevici Рад, что смог помочь. Вы можете пометить ответ как выполненный для ссылки на других.
3. как я могу добавить несколько изображений в этот код? нравится good.jpg , good1.jpg , еще раз спасибо!
4. Нет, я хочу белый список для указанных изображений! что-то вроде gtrskxd.jpg , mfhdj54.jpg , andsj54k2.jpg
5. Затем вы можете просто добавить
OR
условие вif
блок
Ответ №2:
Отфильтруйте div, содержащие содержимое, с помощью good.jpg
и удалите отрицание с помощью not()
и remove()
:
$('.first.div').not($('.first.div').filter(
function(index, element)
{
return $(element)
.find(".test-icon")
.css('background-image').indexOf("good") >= 0
}
)).remove();
Комментарии:
1. Зачем использовать
not
функцию, когда можно просто переключаться>=
с<
помощью?2. Если это так просто, опубликуйте это как ответ и получите зеленую галочку за самый простой ответ
3. Я честно спрашивал, есть ли конкретная причина или нет, если нет, то это действительно избыточно. Вы не согласны?
Ответ №3:
var first_div = $('div.first.div');
for (var i = 0; i < first_div.length; i ) {
var background_image = $(first_div[i]).find('.test-icon').css('background-image');
if (background_image !== 'url(https://good.jpg)') {
$(first_div[i]).remove();
}
}
Надеюсь, это поможет!
Комментарии:
1. Не все браузеры одинаково сериализуют правила CSS, например, ваш код будет работать в Safari, но не в chrome или FF, которые преобразуют его в
'url("https://good.jpg")'
2. @Kaiido Ты уверен? Как вы это проверили? Я просто тестирую еще раз. Это хорошо работает как в Chrome, так и в FF.
3. Я протестировал это в chrome 54, FF 50 и safari 9.1.3, все на osx, и результаты совпадают с теми, которые я вам предоставил. Вероятно, результаты даже отличаются между разными версиями одного и того же браузера и на разных платформах.
Ответ №4:
Вам нужно просмотреть все элементы .text-icon с помощью каждой функции jQuery.
$( "div.first .text-icon" ).each(function( ) {
if( $( this ).css('background-image')!='url(https://good.jpg)' ) {
$( this ).remove();
}
});
Комментарии:
1. Здесь будут удалены даже те, у которых правильное фоновое изображение
Ответ №5:
Рабочий пример использования slice
для извлечения URL-адреса каждого изображения:
$('.first').each(function(){
var img_url = $(this).find('.test-icon').css('background-image').slice(5, -2);
if (img_url != "https://good.jpg/"){
$(this).remove();
}
});
Ответ №6:
Вы могли бы добиться этого, как показано ниже:
var bg = $('first').find('.text-icon').filter(function(bg) {
return $(bg).css('background-image') === 'url(https://good.jpg)';
//although you should use '/good.jpg')
)};
bg.hide();
Комментарии:
1. Не все браузеры одинаково сериализуют правила CSS, например, ваш код будет работать в Safari, но не в chrome или FF, которые преобразуют его в
'url("https://good.jpg")'
Ответ №7:
Вы можете попробовать это
if ($('.test-icon').attr('background-image') != "https://good.jpg") {
$('.first div').remove();
}
Если вы хотите удалить весь класс «first div»..
Комментарии:
1. Это удаляет практически все из опубликованного фрагмента HTML. Обычно хорошей идеей является протестировать код, прежде чем рекомендовать его другим.