如何使用jQuery循环遍历以特定字符串开头的每个div?

时间:2015-06-11 23:04:24

标签: javascript jquery

我试图循环遍历以“Held”开头的每个div,如果它不存在于另一个对象中,请选中将其删除。

这就是我所做的

$.each($("div[id^='Held']"), function(key, val){
    var divName = $(this).attr('id');
    var uniqueId = divName.replace('Held', '');

    if ($.inArray(uniqueId, data.onHold) === -1){

        $('#' + ivName).remove();
    }
});

我也尝试了这种语法

$("div[id^='Held']").each(function(key, val){

    var divName = $(this).attr('id');
    var uniqueId = divName.replace('Held', '');

    if ($.inArray(uniqueId, data.onHold) === -1){

        $('#' + ivName).remove();
    }
});

但它没有按预期删除div

3 个答案:

答案 0 :(得分:1)

问题在于搜索项目是否在数组中。 My Array在每个值中都有一个对象。

以下是我为解决此问题所做的工作

data=[];
data[0] = [{
    "num": 29,
    "ser": 1,
}, {
    "num": 44,
    "ser": 2,
}] 
data[1]=[{
    "num": 10,
    "ser": 3,
}]

 allData = data.reduce(function (a, b) { return a.concat(b) });
  // the following line gives me an error
 var MDData=JSON.parse(sessionStorage.MDData);
 if (MDData!==null) {console.log("Hello")}
 sessionStorage.setItem('MyData', JSON.stringify(allData));

答案 1 :(得分:0)

我会使用key参数:

var elms = $("div[id^='Held']");

elms.each(function(key, val){

    var divName = $(this).attr('id');
    var uniqueId = divName.replace('Held', '');

    if ($.inArray(uniqueId, data.onHold) === -1){

        elms.eq(key).remove();
    }
});

答案 2 :(得分:0)

当您已经在变量中删除了要删除的元素时,无需使用选择器。

$("div[id^='Held']").each(function(){

    var divName = this.id;
    var uniqueId = divName.replace('Held', '');

    if ($.inArray(uniqueId, data.onHold) === -1){
        $(this).remove();
    }
});

您也可以使用.filter

$("div[id^='Held']").filter(function() {
    var uniqueId = this.id.replace('Held', '');
    return $.inArray(uniqueId, data.onHold) === -1;
}).remove();