如何避免使用jquery多次向div添加相同的图像?

时间:2013-01-09 11:20:06

标签: jquery image

我在jquery工作。 我写了一个脚本,将第一个div的图像添加到第二个div。 但是,我不希望它能够两次添加相同的图像。

这是第一个div的代码

<div><span class="span1">
<img width="30" hieght="30" name="productimage" src="http://panther:805/Computers.jpg"></span>
<span class="span1">Black_xxl_Slim</span>
<span class="span1">1</span>
<a class="pull-right" href="#"><i onclick="Add(this)" class="icon-plus"></i></a>
</div>

以下是第二个div的代码:

<div class="span6" id="separat">
            <ul class="thumbnails pre-scrollable" id="productbundles">
            </ul>
        </div>

这是我的jquery

function Add(obj) {
    var img = $(obj).closest('div').find('img').first();

    var image_src = $(img).attr('src');
    var newobj = $('<li class="span2" id="bunle' + id++ + '"><a href="javascript: void(0)"><img hieght=30  width=30 src="' + image_src + '" /></a><h5>'+"Name:" + name + '</h5><span id="pric' + id + '"><b>'+ "Price:"+ price + '</b></span>');
    $('#productbundles').append(newobj);
}

添加div工作正常,但它允许相同的项目添加两次。 我怎么能阻止这种情况发生? 在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

您必须拥有已经存在或已添加的图像列表,以避免再次添加它们。只需构建一个列表:

var added_images = [];

并使用简单的方法检查列表中的图像存在:

    if (added_images.indexOf(src)) {
    // image already exists
    } else {
       // add the image to the list
       added_images.push(src);
       // and DOM...
    }

答案 1 :(得分:0)

if(!$("#productbundles img[src$='" + image_src + "'").length)
{
var newobj = $('<li class="span2" id="bunle' + id++ + '"><a href="javascript: void(0)"><img hieght=30  width=30 src="' + image_src + '" /></a><h5>'+"Name:" + name + '</h5><span id="pric' + id + '"><b>'+ "Price:"+ price + '</b></span>');
$('#productbundles').append(newobj);
}

如果您有完整的src路径,请尝试删除$。

答案 2 :(得分:0)

执行此操作的方法很多...您可以向已添加的<img>添加一个类,并检查该类...使用hasClass

我这样做的方式是..创建一个数组..并将src推入数组并检查数组中是否存在src

function Add(obj) {
  var addedImagesArray=[];
  var img = $(obj).closest('div').find('img').first();

   var image_src = $(img).attr('src');
   var newobj = $('<li class="span2" id="bunle' + id++ + '"><a href="javascript: void(0)"><img hieght=30  width=30 src="' + image_src + '" /></a><h5>'+"Name:" + name + '</h5><span id="pric' + id + '"><b>'+ "Price:"+ price + '</b></span>');
   if (addedImagesArray.indexOf(image_src)) {
       alert("Image Already Added");//src present in the array so do nothing or show an alert..
   } else{
       $('#productbundles').append(newobj); //append the image
       addedImagesArray.push(image_src); ///add src to array
   }
}