Javascript - 根据属性将属性拉入数组/删除项

时间:2014-08-05 15:27:45

标签: javascript jquery arrays

我想将特定<img>中所有<div>的类拉入数组中,然后使用这些类删除在不同类中共享该类的第一个<img> <div>

到目前为止,我有这个调用原始数组:

var class = $('.frame div img').each(function() {
    return $(this).class;
}).get();

class.forEach(function(entry) {
    console.log(entry);
});

日志输出<img></img>行的列表。

之后,我被困住了。

//Iterate through array and delete first <img> in #grid that has the same class, limit one per iteration.

// var img_class = $.each(class, function(key, value) {
//     console.log(value);
//     return $(this).attr('class');
// });

$('#grid img').each(function(){
    if($(this).attr('class') == img_class){
        $(this).remove();
    }
});

目标是:

  • 将一组类添加到img_class变量
  • 在遍历数组
  • 中的每个类时,仅删除第一个<img>

谢谢!

3 个答案:

答案 0 :(得分:1)

我不确定我是否理解它,但这样的事情会有什么帮助吗?

var firstIDs = "";

$('.frame div img').each(function() {

    firstIDs += $(this).attr('id') + ",";

});

var SplitIDs = firstIDs.split(",");

$('#grid img').each(function(){

    for(var i = 0; i < SplitIDs.length; i++) {

        if($(this).attr('id') == SplitIDs[i]){

            $("#grid img #"+$(this).attr('id')+":first").remove();

        }

    }

});

答案 1 :(得分:0)

我建议使用除课程之外的其他属性,例如。 '数据类型'。

使用收集的属性值(例如'types'数组)执行:

var $grid = $('#grid');

// iterate over collected types
types.forEach(function(type)) {

    // find within $grid the first <img> with data-type == type and remove it from DOM
    $grid.find('img[data-type="' + type + '"]:eq(0)').remove();
}

你也可以一蹴而就:

// iterate over source <img> set
$('.frame div img').each(function() {

 // get current images type-attrib
 var type = $(this).attr('data-type');

 // find within $grid the first <img> with data-type == type and remove it from DOM
 $grid.find('img[data-type="' + type + '"]:eq(0)').remove();

});

答案 2 :(得分:0)

尝试

$(function() {
    var classes = $.map($(".frame div img"), function(v, k) {
      return [$(v).attr("class")];
    });
    var d = [];
    console.log($("#grid img").length);
    $.each($("#grid img"), function(k, v) {
        if ( classes.hasOwnProperty($(v).attr("class")) ) {
              d.push(v); $("body").find($(d.slice(0, 1))).remove();
            };    
    });
    console.log($("#grid img").length);
});

jsfiddle http://jsfiddle.net/guest271314/yv95C/