我有一组数字,我需要在这样的网页上定位:
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在每个<div class="block">
之后插入一些HTML。如果声明当然是真的,它应该只被插入。
$("<p>test!</p>").insertAfter(....);
2)如果这对性能最佳,因为我的数组实际上要大得多,要在forEach中检查超过1000个值。
由于
答案 0 :(得分:0)
如果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" ) );
}
答案 1 :(得分:0)
这个怎么样?存储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>')
})