如何从jQuery

时间:2017-09-30 14:44:34

标签: javascript jquery

我已经编写了上传图片的脚本,为此,我编写了一个删除功能,我从两个函数调用,每当我从另一个函数调用删除函数时,它就触发了两次。

对于Ex:

function getImgTrashEvents(){
  $('.image-demo').bind().click(function(){
    if(confirm("Do you want to delete this image?")){
      //Do something to delete image
    }
  });
}

//Showing images from database
function showPresentImages(){
  //Here I've written ajax call to get all images 
  $.ajax({ 
    url:'get-images', 
    success: function(response){
      //Do something to load UI of images and delete button <img class="image-demo">
      getImgTrashEvents();
    }
  });
}

//Uploading new images
function uploadImages(){
  //demo ajax call to upload photo 
  $.ajax({
    url:'upload-photo',
    success: function(response){ 
      //Load UI with newly uploaded images with class images-demo
      getImgTrashEvents();
    }
  });
}

在这段代码中,我写了3个函数,一个用于获取垃圾图像的所有事件,第二个函数用于显示来自数据库的预设图像和最终功能用于上传新图像。

在这里,我在两个函数中调用getImgTrashEvents();这个函数。但是当我从getImgTrashEvents();的两个事件中调用它时,在上传图像并显示两次确认警报后,单击两次或更多次。如果我仅在showPresentImages()函数中调用此函数,则它不会对uploadImages()生效。

1 个答案:

答案 0 :(得分:2)

不确定代码是否在.bind().click()正确发布到OP?问题是代码会在每次调用clickgetImgTrashEventsshowPresentImages时附加uploadImages个事件。

相反,您可以在click之外定义getImagTrashEvents事件,如果需要,可以调用.click()来调度事件,而不是将另一个事件处理程序附加到jQuery对象。

$('.image-demo').click(function(){
  if(confirm("Do you want to delete this image?")){
    //Do something to delete image
  }
});

function getImgTrashEvents(){
  $('.image-demo').click()
}