基于jquery的一个拖拽到指定区域内的效果_jquery

这个可与前两个不同了,这个是拖拽到指定的区域内的特效。其实逻辑方式差不多,只不过不同的是 找到目标元素,用appendTo 的方法插入到目标元素。
具体的代码如下,有兴趣者可以试下。(由于是初学,做的简单,如果有其他的方法请给下指点,我定感激不尽哈。。。)

复制代码 代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>测试的拖拽功能</title>
<style type="text/css">
body, div { margin: 0; paading: 0; font-size: 12px; }
ul, li { margin: 0; padding: 0; list-style: none; }
.clear { clear: both; width: 1px; height: 0px; line-height: 0px; font-size: 1px; }
.bor2 { padding: 20px 0 0 0; }
.box { position: static; float: left; width: 200px; height: 800px; margin: 0 auto; margin-top: 15px; }
.bor { position: static; width: 100px; height: 100px; margin: 0 0 5px 0 ; border: 1px solid #ccc; background: #ececec; }
.borp { position: absolute; width: 100px; height: 80px; margin: 10px; padding: 10px; border: 1px solid #ccc; background: #ececec; }
.bg { float:left; width: 100px; height: 100px; margin: 8px 5px 0 auto; padding: 10px; border: 1px solid #ccc; }
.text2 { width: 200px; }
.bgColor { border: 1px dashed #f00; }
</style>
<script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var move = false; // 移动的初始化
var $bg = $(".bg");
var initDiv, tarDiv, tarDivHalf = 0, wHalf = 0; //拖拽对象 目标对象
var initPos = {x: 0, y: 0}, relPos = {x: 0, y: 0}, temPos = {x: 0, y: 0};
var dragPos = {x1: 0, x2: 0, y1: 0, y2: 0};// 拖拽对象的四个坐标
var tarDivPos = {x1: 0, y1: 0, x2: 0, y2: 0}; //目标对象的四个坐标
$(".bor").each(function() {
$(this).mousedown(function(event) {
borSub = $(this).index();
initDiv = $(".bor").eq(borSub); //拖拽对象
// 鼠标 与 目标元素的相对坐标
relPos.x = event.pageX - $(this).offset().left;
relPos.y = event.pageY - $(this).offset().top;
move = true;
});
$(document).mousemove(function(event) {
if (!move) { return false; }
// 下列代码是 if(move)的 程序
initDiv.removeClass("bor").addClass("borp");
// 目标元素随鼠标移动的坐标
dragPos.x1 = event.pageX - relPos.x;
dragPos.y1 = event.pageY - relPos.y;
dragPos.x2 = dragPos.x1 + initDiv. innerWidth();
dragPos.y2 = dragPos.y1 + initDiv. innerHeight();
initDiv.css({ left: dragPos.x1 +'px', top: dragPos.y1 + 'px' });
$bg.each(function() {
tarDiv = $(this);
// 目标对象的坐标
tarDivPos.x1 = tarDiv.offset().left;
tarDivPos.x2 = tarDivPos.x1 + tarDiv.width();
tarDivPos.y1 = tarDiv.offset().top;
tarDivPos.y2 = tarDivPos.y1 + tarDiv.height();
tarDivHalf = tarDiv.height()/2; //临时变量,以便于在if判断中使用
wHalf = tarDiv.width()/2;
if (dragPos.x2 >= tarDivPos.x1 + wHalf && dragPos.x2 <= tarDivPos.x2 + wHalf && dragPos.y2 >= tarDivPos.y1 + tarDivHalf && dragPos.y2 <= tarDivPos.y2 + tarDivHalf ) {
if(tarDiv.children().length >0 ) {return false;}// 解决重叠元素 移动到一个目标元素
tarDiv.removeClass("bg").addClass("bg bgColor");
} else {
tarDiv.removeClass("bgColor");
}
});
}).mouseup (function(event) {
initDiv.appendTo($(".bgColor"));// 利用 apppendTo 方法 使拖动元素对象添加到指定的区域。
initDiv.removeClass("borp").addClass("bor").removeAttr("style"); //恢复拖拽对象初始的样式
move = false;
});
});
});
</script>
</head>
<body>
<div class="box">
<div class="bor">bor1</div>
<div class="bor">bor2</div>
<div class="bor">bor3</div>
</div>
<div class="box2">
<div class="bg" id="bg1"></div>
<div class="bg" id="bg2"></div>
<div class="bg" id="bg3"></div>
<div class="bg" id="bg4"></div>
<div class="bg" id="bg5"></div>
<div class="bg" id="bg6"></div>
<div class="bg" id="bg7"></div>
<div class="bg" id="bg8"></div>
<div class="bg" id="bg9"></div>
<div class="bg" id="bg10"></div>
<div class="bg" id="bg11"></div>
<div class="bg" id="bg12"></div>
<div class="bg" id="bg13"></div>
<div class="bg" id="bg14"></div>
<div class="bg" id="bg15"></div>
<div class="bg" id="bg16"></div>
<div class="bg" id="bg17"></div>
<div class="bg" id="bg18"></div>
<div class="bg" id="bg19"></div>
<div class="bg" id="bg20"></div>
<div class="bg" id="bg21"></div>
<div class="bg" id="bg22"></div>
<div class="bg" id="bg23"></div>
<div class="bg" id="bg24"></div>
<div class="bg" id="bg25"></div>
<div class="bg" id="bg26"></div>
<div class="bg" id="bg27"></div>
<div class="bg" id="bg28"></div>
<div class="bg" id="bg29"></div>
<div class="bg" id="bg30"></div>
<div class="bg" id="bg31"></div>
<div class="bg" id="bg32"></div>
<div class="bg" id="bg33"></div>
<div class="bg" id="bg34"></div>
<div class="bg" id="bg35"></div>
<div class="bg" id="bg36"></div>
<div class="bg" id="bg37"></div>
<div class="bg" id="bg38"></div>
<div class="bg" id="bg39"></div>
</div>
<div class="clear"></div>
</body>
</html>

时间: 2024-10-10 16:41:38

基于jquery的一个拖拽到指定区域内的效果_jquery的相关文章

基于jquery插件实现拖拽删除图片功能_jquery

本文实例为大家分享了jquery插件实现拖拽删除图片功能的具体代码,供大家参考,具体内容如下 实现以下效果 完全拖出这个层,图片会消失,否则图片会回到原来的位置 <html> <head> <title></title> <style type="text/css"> #mydiv{ width:900px; background-color:#444; border:1px solid red} #mydiv2{ width

jQuery实现元素拖拽并cookie保存顺序的方法_jquery

本文实例讲述了jQuery实现元素拖拽并cookie保存顺序的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"&

基于jquery的jqDnR拖拽溢出的修改_jquery

复制代码 代码如下: /* * jqDnR - Minimalistic Drag'n'Resize for jQuery. * * Copyright (c) 2007 Brice Burgess <bhb@iceburg.net>, http://www.iceburg.net/ * Licensed under the MIT License: * http://www.opensource.org/licenses/mit-license.php * * $Version: 2007.

基于jquery实现一个滚动的分步注册向导-附源码_jquery

先给大家展示效果图,需要的朋友可以下载源码哦- 查看演示        下载源码 HTML 首先要载入jquery库和滚动插件scrollable.js <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="scrollable.js"></script&

jQuery + Flex 通过拖拽方式动态改变图片的代码_jquery

代码如下: 复制代码 代码如下: function init() { if(swfobject.hasFlashPlayerVersion("10")){ var flashvars = {}; flashvars.xmlPath = "coffee"; flashvars.name = "coffee"; var params = {}; params.quality = "high"; params.wmode = &qu

基于jquery插件制作左右按钮与标题文字图片切换效果_jquery

本例用了2个js文件jquery-ui-1.8.6.core.widget.js和jqueryui.bannerize.js,到演示页面可以查看 CSS Code 复制代码 代码如下: <style type="text/css"> *{margin:0;padding:0;list-style-type:none;} a,img{border:0;} /* ui-banner */ .ui-banner{display:block;position:relative;wi

基于jQuery实现拖拽图标到回收站并删除功能_jquery

本文利用jQuery实现一个拖拽删除桌面小图标的功能,使用起来就像操作系统的回收站一样,我们只需要拖动应用图标至垃圾箱即可删除这个图标,分享给大家,具体实现方法如下 运行效果图: 引入核心文件 这里需要引入jquery,jquery ui,与jquery ui css <link rel="stylesheet" href="assets/css/jquery-ui.css" /> <script src="js/jquery/1.8.3

Jquery UI实现一次拖拽多个选中的元素操作_jquery

项目需要,实现一个拖放操作,要求每次可以拖拽选中的多个元素,释放到目标容器后可排序.考虑了一下,觉得jquery-ui比较合适,毕竟它提供了项目需要的交互性事件机制.拖拽.释放.排序.选择等效果.而在实际的操作中,遇到个很多的问题,说明一下,最后附上效果图和代码. 1.本人使用的bootstrap框架,引入jquery-ui后,为元素添加拖拽方法后,提示该方法不是一个函数.查找原因,是bootstrap和jquery-uide的$ 标识符控制权冲突.在引入的jquery-ui的js前加上一下语句

jQuery 移动端拖拽(模块化开发,触摸事件,webpack)_jquery

通过jquery可以很容易实现CP端的拖拽.但是在移动端却不好用了.于是我自己写了一个在移动端的拖拽demo,主要用到的事件是触摸事件(touchstart,touchmove和touchend). 这个demo实现的功能是:可以拖拽的元素(在这里是图片)位于列表中,这些元素可以被拖到指定区域,到达指定区域(控制台)后,元素被插入控制台后,原来的拖动元素返回原位置,新的元素依然可以在控制台中拖动,也能拖出控制台. 在这个demo中一个用三个模块,分别为ajax模块,drag模块,position