1

我有一组具有设置的图像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
}

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

4

1 回答 1

3

您应该使用.removeAttr()而不是.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
}
于 2012-08-07T20:49:07.133 回答