删除可拖动的属性

时间:2012-08-07 20:12:43

标签: jquery drag-and-drop jquery-ui-draggable

我有一组draggable=true设置的图片。这些图像旨在被拖动然后放到谷歌地图视图上并在放置位置创建标记。为了防止地图上出现重复图像,我想禁用可拖动设置并更改不透明度。

我的地图可放置和可下载照片的处理程序

$("#photo"+i).draggable({
  helper: "clone",
  cursor: "move",
  containment:  'body',
  start: function(e){
    $(this).addClass("fade");
    currentPhoto = $(this);   
  }
});

$("#map").droppable({
  drop: function(e){
    var point = new google.maps.Point(e.pageX, e.pageY);
    var data = {
      "location": overlay.getProjection().fromDivPixelToLatLng(point),
      "photo": currentPhoto
    }

    makeMarkers(data.location, $(data.photo).attr("src"), $(data.photo).attr('id'));
  }
});

makeMarkers内,type值用于确定是否在页面加载时从数据库检索值创建标记,或者是否是要拖动的照片图像的ID。

function makeMarkers(location, title, type){
   //variable and marker initialization here    

  if (type == "onload")
    newMarker.setIcon(savedLocation);
  else {
    newMarker.setIcon(unsavedLocation);
    $("img."+type).attr("draggable", "false");
    $("img."+type).attr("opacity", "0.5");
    console.log("Disabling draggability of " +type);
  }

   //marker event handlers here
}

我可以拖放图像,并在该位置创建一个新标记。但是,图像属性不变。如何启用该功能

1 个答案:

答案 0 :(得分:2)

您应该使用.removeAttr()代替.attr()

这段代码可以解决问题:

function makeMarkers(location, title, type){
   //variable and marker initialization here    

  if (type == "onload")
    newMarker.setIcon(savedLocation);
  else {
    newMarker.setIcon(unsavedLocation);
    $("img."+type).removeAttr("draggable");
    $("img."+type).attr("opacity", "0.5");
    console.log("Disabling draggability of " +type);
  }

   //marker event handlers here
}