87,838
社区成员




//这里动态添加了图片
function imginit(){
var top = 150;
var left = new Array(650,950);
for(var i = 0; i < 10; i++){
var images = document.getElementById('images');
var tempimg = document.createElement('img');
tempimg.setAttribute('class','img'+(i+1));
tempimg.setAttribute('src','css/images/img'+(i+1)+'.jpg');
tempimg.setAttribute('style','top:'+(top+(Math.floor(i/2)*280))+'px;left:'+left[i%2]+'px;');
images.append(tempimg);
}
}
window.onload = function(){
imginit();}
//选择图片功能,实现将图片拖动到一个目标区域//突然失效//这段代码写在$(document).ready(function{})里了
$('img[class^=img]').on({
mousedown:function(e){
var img = $(this);
var os = img.offset();
sessionStorage.setItem("left",os.left);
sessionStorage.setItem("top",os.top);
e.preventDefault();
dx = e.pageX - os.left;
dy = e.pageY - os.top;
$(document).on('mousemove.drag',function(e){
sessionStorage.setItem("cleft",e.pageX - dx);
sessionStorage.setItem("ctop",e.pageY - dy)
img.offset({top:e.pageY - dy,left:e.pageX - dx});
$("#target").text("请放这里!");//目标区域是一个div//高度宽度都是144px
});
},
mouseup:function(e){
var target = $('#target');
var tos = target.offset();//获取目标区域的top和left
if((tos.left+250) >= sessionStorage.getItem("cleft") && (tos.left-250) <=sessionStorage.getItem("cleft")
&& (tos.top+250) >= sessionStorage.getItem("ctop") && (tos.top-250) <= sessionStorage.getItem("ctop")){
//判断图片是否接触到目标区域
target.css('background',"url("+$(this).prop('src')+")");
target.css('background-size','144px 144px');
}
target.text("");
sessionStorage.setItem('picture',"images/"+$(this).prop('class')+".jpg");
e.preventDefault();
$(document).off('mousemove.drag');
$(this).offset({top:sessionStorage.getItem("top"),left:sessionStorage.getItem("left")});//让拖动的图片弹回原位置
}
});
// 示例
$( "p" ).on( "click", function() {
alert( $( this ).text() );
});
[/quote]
$('img[class^=img]').on('mousedown',function(e){
var img = $(this);
var os = img.offset();
console.log(os.left);
sessionStorage.setItem("left",os.left);
sessionStorage.setItem("top",os.top);
e.preventDefault();
dx = e.pageX - os.left;
dy = e.pageY - os.top;
$(document).on('mousemove.drag',function(e){
sessionStorage.setItem("cleft",e.pageX - dx);
sessionStorage.setItem("ctop",e.pageY - dy)
img.offset({top:e.pageY - dy,left:e.pageX - dx});
$("#target").text("请放这里!");
});
});
$('img[class^=img]').on('mouseup',function(e){
var target = $('#target');
var tos = target.offset();
console.log(tos.left);
if((tos.left+250) >= sessionStorage.getItem("cleft") && (tos.left-250) <=sessionStorage.getItem("cleft")
&& (tos.top+250) >= sessionStorage.getItem("ctop") && (tos.top-250) <= sessionStorage.getItem("ctop")){
target.css('background',"url("+$(this).prop('src')+")");
target.css('background-size','144px 144px');
}
target.text("");
sessionStorage.setItem('picture',"images/"+$(this).prop('class')+".jpg");
e.preventDefault();
$(document).off('mousemove.drag');
$(this).offset({top:sessionStorage.getItem("top"),left:sessionStorage.getItem("left")});
});
改成这样了,还是监听不到点击,很难受,又没有报错,感觉无从下手。
之前用原生js又编过一遍的,还是不行,还是接收不到鼠标点击。
img标签不应该默认是可以拖动的吗(dragable为true),可是我注释掉这些事件后,再去试着拖动图片,没有任何反应。
终于发现错在哪了,不是js代码的问题,是我把一个作为容器的div的z-index值设置大了,挡住了图片。。。崩溃崩溃。
谢谢你耐心帮我想办法啊
// 示例
$( "p" ).on( "click", function() {
alert( $( this ).text() );
});
$("images").on("mousedown","img[class^=img]",function(){......});