У меня есть массив чисел, который мне нужно настроить на таких страницах:

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.

Благодарность

0
Zayn 13 Мар 2018 в 12:38

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" ) );
}
0
gurvinder372 13 Мар 2018 в 09:47

Как насчет этого? Храните 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>')
})
0
karthikaruna 13 Мар 2018 в 10:00