关于jquery多个层拖拽问题,如下代码

jQuery(function(){var_move=false;var_x,_y;jQuery(".drag").mousedown(function(e){_move... jQuery(function() {
var _move = false;
var _x, _y;
jQuery(".drag").mousedown(function(e) {
_move = true;
_x = e.pageX - parseInt(jQuery(".drag").css("left"));
_y = e.pageY - parseInt(jQuery(".drag").css("top"));
jQuery(".drag").fadeTo(20, 0.5);
});
jQuery(".drag").mousemove(function(e) {
if (_move) {
var x = e.pageX - _x;
var y = e.pageY - _y;
jQuery(".drag").css({ top: y, left: x });
}
}).mouseup(function() {
_move = false;
jQuery(".drag").fadeTo("fast", 1);
jQuery('.drag').css('color','red').html("top:"+ jQuery('.drag').css('top')+","+"left:"+jQuery('.drag').css('left'));
});
});

<div id="id1" class="drag"></div><div id="id2" class="drag"></div>

<div id="id3" class="drag"></div><div id="id4" class="drag"></div>

问题:现在点击一个层,但四个层都同时被拖拽,我只想要当前点击的层被拖拽,如何实现?而且我不止有4个层,很多层,不要每个div都复写jquery拖拽代码,急,坐等,追加分
展开
 我来答
newchinays
2013-04-29 · TA获得超过1172个赞
知道小有建树答主
回答量:1238
采纳率:48%
帮助的人:421万
展开全部

试试这样


试试这样

1将内部的 jQuery(".drag").

改为 $(this).



jQuery(function() {
&nbsp;&nbsp;&nbsp;&nbsp;var _move = false;
&nbsp;&nbsp;&nbsp;&nbsp;var _x, _y;
&nbsp;&nbsp;&nbsp;&nbsp;jQuery(".drag").mousedown(function(e) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_move = true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_x = e.pageX - parseInt($(this).css("left"));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_y = e.pageY - parseInt($(this).css("top"));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery(".drag").fadeTo(20, 0.5);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery(".drag").mousemove(function(e) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (_move) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var x = e.pageX - _x;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var y = e.pageY - _y;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).css({ top: y, left: x });
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}).mouseup(function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_move = false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).fadeTo("fast", 1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).css('color','red').html("top:"+ $(this).css('top')+","+"left:"+$(this).css('left'));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;});
});
追问
你加的return  false;这句有什么用的?
追答
用作事件停止传递
无野楼升域醉0t
2013-04-29 · TA获得超过8552个赞
知道小有建树答主
回答量:1498
采纳率:88%
帮助的人:503万
展开全部
改为

jQuery(function() {
var _move = false;
var _x, _y;
jQuery(".drag").mousedown(function(e) {
_move = true;
_x = e.pageX - parseInt(jQuery(this).css("left"));
_y = e.pageY - parseInt(jQuery(this).css("top"));
jQuery(".drag").fadeTo(20, 0.5);
});
jQuery(".drag").mousemove(function(e) {
if (_move) {
var x = e.pageX - _x;
var y = e.pageY - _y;
jQuery(".drag").css({ top: y, left: x });
}
}).mouseup(function() {
_move = false;
jQuery(this).fadeTo("fast", 1);
jQuery(this).css('color','red').html("top:"+ jQuery(this).css('top')+","+"left:"+jQuery(this).css('left'));
});
});

<div id="id1" class="drag"></div><div id="id2" class="drag"></div>

<div id="id3" class="drag"></div><div id="id4" class="drag"></div>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Onewarden
2013-04-29 · TA获得超过327个赞
知道小有建树答主
回答量:145
采纳率:100%
帮助的人:143万
展开全部
为什么不用jQuery ui 呢?它可以方便的实现你所说的功能,无论多少个层,寥寥几行代码就能搞定,任何层随意拖拽

<script type="text/javascript" src="jquery-ui-1.9.2.custom/js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="jquery-ui-1.9.2.custom/js
/jquery-ui-1.9.2.custom.min.js"></script>

引入以上两个js文件,
$(function(){
$('#draggable .drag').draggable({
cursor:"pointer" //设置拖动时鼠标指针为手形
});
});

</script>
<div id="draggable">
<div class="drag">asdfsf</div>
<div class="drag">asdf</div>
<div class="drag">dddddd</div>
<div class="drag">dddd</div>
</div>
追问
谢谢,楼下的给出了,还是多谢你的解答,又要接触jQuery ui有点乱了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式