http://dev.iceburg.net/jquery/jqDnR/
/*
* 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.02.09 +r1
*/
(function($){
$.fn.jqDrag=function(r){
$.jqDnR.init(this,r,'d');
return this;
};
$.fn.jqResize=function(r){
$.jqDnR.init(this,r,'r');
return this;
};
$.jqDnR={
init:function(w,r,t){
r=(r)?$(r,w):w;
r.bind('mousedown',{w:w,t:t},function(e){
var h=e.data;
var w=h.w;
hash=$.extend({oX:f(w,'left'),oY:f(w,'top'),oW:f(w,'width'),oH:f(w,'height'),pX:e.pageX,pY:e.pageY,o:w.css('opacity')},h);
h.w.css('opacity',0.8);
$().mousemove($.jqDnR.drag).mouseup($.jqDnR.stop);
return false;
}
);
},
drag:function(e) {
var h=hash;
var w=h.w[0];
if(h.t == 'd') h.w.css({left:h.oX + e.pageX - h.pX,top:h.oY + e.pageY - h.pY});
else h.w.css({width:Math.max(e.pageX - h.pX + h.oW,0),height:Math.max(e.pageY - h.pY + h.oH,0)});
return false;
},
stop:function(){
var j=$.jqDnR;
hash.w.css('opacity',hash.o);
$().unbind('mousemove',j.drag).unbind('mouseup',j.stop);
},
h:false
};
var hash=$.jqDnR.h;
var f=function(w,t){
return parseInt(w.css(t)) || 0
};
})(jQuery);
http://code.google.com/p/jquery-drag-and-drop/
/*
* dragndrop
* version: 1.0.0 (05/13/2009)
* @ jQuery v1.2.*
*
* Licensed under the GPL:
* http://gplv3.fsf.org
*
* Copyright 2008, 2009 Jericho [ thisnamemeansnothing[at]gmail.com ]
* usage:
*
*/
//(function($) {
$.extend($.fn, {
getCss: function(key) {
var v = parseInt(this.css(key));
if (isNaN(v))
return false;
return v;
}
});
$.fn.Drags = function(opts) {
var ps = $.extend({
zIndex: 20,
opacity: .7,
handler: null,
onMove: function() { },
onDrop: function() { }
}, opts);
var dragndrop = {
drag: function(e) {
var dragData = e.data.dragData;
dragData.target.css({
left: dragData.left + e.pageX - dragData.offLeft,
top: dragData.top + e.pageY - dragData.offTop
});
dragData.handler.css({ cursor: 'move' });
dragData.onMove(e);
},
drop: function(e) {
var dragData = e.data.dragData;
dragData.target.css(dragData.oldCss); //.css({ 'opacity': '' });
dragData.handler.css('cursor', dragData.oldCss.cursor);
dragData.onDrop(e);
$().unbind('mousemove', dragndrop.drag)
.unbind('mouseup', dragndrop.drop);
}
}
return this.each(function() {
var me = this;
var handler = null;
if (typeof ps.handler == 'undefined' || ps.handler == null)
handler = $(me);
else
handler = (typeof ps.handler == 'string' ? $(ps.handler, this) : ps.handler);
handler.bind('mousedown', { e: me }, function(s) {
var target = $(s.data.e);
var oldCss = {};
if (target.css('position') != 'absolute') {
try {
target.position(oldCss);
} catch (ex) { }
target.css('position', 'absolute');
}
oldCss.cursor = target.css('cursor') || 'default';
oldCss.opacity = target.getCss('opacity') || 1;
var dragData = {
left: oldCss.left || target.getCss('left') || 0,
top: oldCss.top || target.getCss('top') || 0,
width: target.width() || target.getCss('width'),
height: target.height() || target.getCss('height'),
offLeft: s.pageX,
offTop: s.pageY,
oldCss: oldCss,
onMove: ps.onMove,
onDrop: ps.onDrop,
handler: handler,
target: target
}
target.css('opacity', ps.opacity);
$().bind('mousemove', { dragData: dragData }, dragndrop.drag)
.bind('mouseup', { dragData: dragData }, dragndrop.drop);
});
});
}
//})(jQuery);
分享到:
相关推荐
2. **drag-arrange.js 和 drag-arrange.min.js**:这两个文件是拖拽排序插件的实现。`drag-arrange.js`是源码版本,便于开发者查看和理解内部逻辑,而`drag-arrange.min.js`是经过压缩和优化的版本,适用于实际的...
首先,我们需要理解jQuery的拖拽功能主要依赖于`draggable()`和`droppable()`这两个插件方法。`draggable()`使得元素可以被拖动,而`droppable()`则定义了可以接受拖放元素的目标区域。在这个例子中,div元素既是可...
二次开发时,你可以根据需求调整这些设置,或者扩展插件功能,比如添加自定义的动画效果,或者与其他jQuery插件结合使用。 总的来说,`jQuery基于gridster.js可拖动网格布局插件.zip`提供了一个强大的工具,帮助...
总的来说,这个基于jQuery的拖动滑块图片拼图验证码插件是一个实用且可扩展的工具,适用于需要安全验证但又希望保持用户体验流畅的场景。通过理解和修改其源码,开发者可以进一步提升验证码的安全性和用户体验。
6. **js和css文件夹**:这两个文件夹分别包含了用于实现拖拽排序功能的JavaScript脚本和CSS样式文件。JavaScript文件通常包含了实现拖放逻辑的函数和事件处理程序,而CSS文件则定义了元素的样式和动画效果。 7. **...
一般情况下,这两个文件会被保存在项目的`js`目录下。然后,你可以通过以下方式初始化拖动效果: ```html <script src="js/jquery.js"> <script src="js/jquery.easydrag.js"> $(document).ready(function(){ $(...
jQuery插件是为jQuery库扩展功能的代码片段,它们封装了特定的复杂功能,使得开发者无需从头编写所有代码。这个拖拽排序布局插件就是这样的一个例子,它扩展了jQuery的能力,实现了拖放排序功能。 3. **拖拽排序...
1. **初始化**:在页面加载完成后,插件会创建一个包含两个部分的验证码区域,一个是可移动的图像块,另一个是目标位置。 2. **事件绑定**:使用jQuery的`mousedown`、`mousemove`和`mouseup`事件监听用户的鼠标操作...
本文将深入探讨如何利用jQuery实现拖拽布局,通过提供的"两个给予jquery的拖拽布局的例子",我们可以学习到一些核心的jQuery拖拽功能和布局策略。 首先,拖拽布局是一种用户可以通过鼠标点击并移动元素来改变其位置...
3. X轴和Y轴拖动:用户可以沿着水平(X轴)或垂直(Y轴)方向单独拖动元素,或者同时在两个方向上移动。这需要在事件处理器中分别处理X和Y坐标的变化。 4. 获取XY的左边点:在某些应用场景中,需要知道拖动元素的...
在这个插件中,jQuery主要用于监听用户的拖动事件,处理拖动过程中的动画效果,并在完成拖动后发送验证请求。 ### 3. HTML结构 `index.html`文件是网页的主体,通常包含HTML元素来展示拼图和提供拖动区域。例如: ...
在本压缩包中,包含的`drag.js`是一个实现元素自由拖拽功能的jQuery插件。这个插件允许用户在网页上通过鼠标进行水平和垂直方向的拖动操作,增强网页的交互性。 首先,我们要理解`drag.js`的核心概念。在jQuery中,...
这通常涉及到两个关键概念:选择框(Crop Area)和预览(Preview)。用户可以通过拖动和缩放选择框来定义需要剪裁的部分,而预览则实时显示剪裁结果,帮助用户确认剪裁的准确度。rcrop通过实时计算比例和位置,确保...
这些选择器可以是两个单独的日历组件,或者是一个集成的滑块界面,允许用户在开始时间和结束时间之间进行拖动选择。为了实现这一功能,开发者可能使用HTML5的`<input type="date">`元素,或者利用其他第三方库如...
jQuery Grid通常基于jQuery UI,因此需要确保页面中已经包含了这两个库的CSS和JS文件。例如: ```html <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> ...
拖动上传是jQuery文件上传插件的一个亮点功能。在HTML5中,拖放API(Drag and Drop API)被引入,允许用户直接在页面上拖动元素,包括文件。这个插件充分利用这一特性,使得用户可以通过在支持的浏览器中拖拽文件到...
除了基础功能外,开发者还可以结合其他jQuery插件或自定义JavaScript代码,实现更复杂的功能,例如: - **表单验证**:在浮动层内嵌入表单,并使用验证插件检查用户输入。 - **异步加载**:动态加载浮动层内容,如...
这种插件通常包含两个独立的部分,一个在左边显示可选项,另一个在右边展示已选选项,用户可以通过交互(如点击或拖拽)将选项从左移到右,以实现选择操作。其主要优势在于提供了直观、易用的多选体验,并且能够通过...
在实际项目中,jQuery的拖放功能通常与其他jQuery插件如Sortable、Resizable等结合使用,以构建更复杂的交互式用户界面。 在文件"jQuery物品拖放效果"中,可能包含了具体的HTML、CSS和JavaScript代码示例,供开发者...