У меня есть массив чисел, который мне нужно настроить на таких страницах:
sku = [1243,3453,6453, ..... ]
Эти значения находятся внутри div на такой странице:
<div id="product_1243">
<div class="block">
test
</div>
</div>
<div id="product_3453">
<div class="block">
test
</div>
</div>
<div id="product_6453">
<div class="block">
test
</div>
</div>
Я создал функцию, чтобы проверить, существует ли в этом div число из массива:
sku.forEach(function (element) {
if ($("div[id*='product_item_code_" + element +"']").length) {
alert("this exists" + element);
}
});
Это работает, но я хочу задать два вопроса:
1) Как использовать insertAfter ниже, чтобы вставлять HTML после каждого <div class="block">
. Его следует вставлять, только если утверждение, конечно, верно.
$("<p>test!</p>").insertAfter(....);
2), если это лучше всего для производительности, потому что мой массив на самом деле намного больше и содержит более 1000 значений, которые нужно проверить в forEach.
Благодарность
2 ответа
Используйте append
или appendTo
, если block
является единственным потомком product_***
var $el = $("div[id*='product_item_code_" + element +"']");
if ( $el.length) {
alert("this exists" + element);
$("<p>test!</p>").appendTo( $el );
}
Или
var $el = $("div[id*='product_item_code_" + element +"']");
if ( $el.length) {
alert("this exists" + element);
$el.append( "<p>test!</p>" )
}
Если block
не единственный ребенок
var $el = $("div[id*='product_item_code_" + element +"']");
if ( $el.length) {
alert("this exists" + element);
$("<p>test!</p>").insertAfter( $el.find( ".block" ) );
}
Как насчет этого? Храните products
вместо того, чтобы опрашивать его каждый раз, поскольку это влияет на производительность.
const products = $('div[id^=product_item_code]')
products.each((index, element) => {
if(sku.includes(element.id.split('_')[1]))
$('.block', element).after('<p>test!</p>')
})
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.