#html #jquery #css
#HTML #jquery #css
Вопрос:
Я использую jQuery для перемещения сегментов, которые находятся в классах product-price и product-color, и добавления к содержимому класса product-title (в скобках и через запятую с другим интервалом), однако он отображается как текст вместо html. Может кто-нибудь сказать мне, как этого избежать и, возможно, я делаю это неправильно? Спасибо!
<html>
<head>
<title>Playground</title>
<script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
</head>
<body>
<div id="catalog-courses" class="course-listing">
<a href="#" title="Title1" class="container">
<div class="imgwrap">
<div class="ribbon">
<span class="ribbon-text">Sold Out</span>
</div>
</div>
<div class="product-image">
<img src="https://picsum.photos/100" alt="Product 1" />
</div>
<div class="product-title">Product 1</div>
<div class="product-description">This is all about product 1</div>
<div class="product-price">
<span></span>
</div>
<div class="product-color product-callout">
<span>Blue</span>
</div>
<div class="product-tags">
<span class="product-tag" >
<span>Tag 1</span>
</span>
<span class="product-tag" >
<span>Tag 2</span>
</span>
<span class="product-tag" >
<span>Tag 3</span>
</span>
</div>
<br/><br/><br/>
</a>
<a href="#" title="Title2" class="container">
<div class="imgwrap">
<div class="ribbon">
<span class="ribbon-text">Available</span>
</div>
</div>
<div class="product-image">
<img src="https://picsum.photos/100" alt="Product 2" />
</div>
<div class="product-title">Product 2</div>
<div class="product-description">This is all about product 2</div>
<div class="product-price">
<span>$10</span>
</div>
<div class="product-color product-callout">
<span>Orange</span>
</div>
<div class="product-tags">
<span class="product-tag" >
<span>Tag 1</span>
</span>
<span class="product-tag" >
<span>Tag 2</span>
</span>
<span class="product-tag" >
<span>Tag 5</span>
</span>
</div>
</a>
</div>
<br/><br/><br/>
<script>
$(document).ready(function()
{
var i = 0;
while( i < $('.product-title').length)
{
var value1 = $(".product-price span")[0];
var value2 = $(".product-color span")[0];
if (value1.innerHTML !='' amp;amp; value2.innerHTML !='')
{
$(this).find('.product-title')[i].append(' (', '<span class="test">', value1, ',', value2, '</span>', ')');
}
else if (value1.innerHTML !='')
{
$(this).find('.product-title')[i].append(' (', value1,value2,')');
}
else if (value2.innerHTML !='')
{
$(this).find('.product-title')[i].append(' (', value2,value1,')');
}
i ;
}
});
</script>
</body>
</html>
Комментарии:
1. Каковы ожидаемые результаты? Запуск фрагмента здесь, на странице, не показывает никаких дополнительных кавычек
2. Я прояснил проблему и обновил код. Новый интервал, который я пытаюсь добавить, добавляется с кавычками вокруг него. Вы можете увидеть это во 2-м продукте. Я новичок в jQuery и не уверен, правильно ли я это делаю. Я хочу, чтобы диапазон был html, а не отображался как есть.
Ответ №1:
Внутри вашего цикла while выполните итерацию, используя метод jQuery .eq, например:
if (value1.innerHTML != '' amp;amp; value2.innerHTML != '') {
$('.product-title').eq(i).append('<span class="test">', value1, value2, '</span>');
}
else if (value1.innerHTML != '') {
$('.product-title').eq(i).append(' (', value1, value2, ')');
}
else if (value2.innerHTML != '') {
$('.product-title').eq(i).append(' (', value2, value1, ')');
}
Извините, что перепутал пробелы. Пожалуйста, дайте мне комментарий, если это поможет 😉
Комментарии:
1. Спасибо. Я немного изменил его. Мне нужно прочитать, что делает .eq(). Есть ли лучший способ для меня выполнить эту функцию? Еще раз спасибо!