`
lzl836
  • 浏览: 13841 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

仿照Jquery风格写的一段拖拽,Ajax等代码

 
阅读更多

 

window.$=function(selector){
	return new $.fn.init(selector);
}
$.fn = $.prototype = {
	init : function(selector){
	
		selector = selector || document;
		if (selector.nodeType) {
			this[0] = selector;
			this.length = 1;
			return this;
		}
		if(typeof selector == "string"){
			return $(document.getElementById(selector));
		}
	},
	html : function(value) {
		return value == undefined ? (this[0] ? this[0].innerHTML : null) : (this[0] ? this[0].innerHTML = value : this);
	},
	css : function(s){
		for ( var name in s ) {
			this[0].style[ name ] = s[ name ];
		}
	},
	hide : function(speed,func){
		speed = speed || 10;
		this.css({filter:'alpha(opacity=100)',opacity:1});
		var self_ = this;
		this.alpha({start:10,end:0,speed:speed},function(){
			self_.css({display:"none"});
			if(func) func();
		});
	},
	show : function(speed,func){
		speed = speed || 10;
		this.css({display:""});
		this.alpha({start:0,end:10,speed:speed},func);
	},
	alpha : function(op,func){
		var self_ = this;
		var n = op.start;
		var obj = this[0];
		var end = op.end;
		var step = op.start > op.end ? -1:1;
		var alpha = function(){
			n += step;
			self_.css({'filter':'alpha(opacity=' + n*10 + ')','opacity':n/10});
			if( n != end ){
				window.setTimeout(alpha,op.speed);
			}else{
				if(func) func();
			}
		};
		alpha();
	},
	val : function(value){
		return value == undefined ? (this[0] ? this[0].value : null) : (this[0] ? this[0].value = value : this);
	},
	drag : function(){
		var div = this[0];
		var mouseD = false;
		var mx = 0,my = 0;
		var alphaFlg = false;
		div.onmousedown = function(e){
			var e = e ? e : event;
			if(e.button == (document.all ? 1 : 0)){
				mouseD = true;
				mx = e.x ? e.x : e.pageX;
				my = e.y ? e.y : e.pageY;
				$(div).css({'left':this.offsetLeft + "px",'top':this.offsetTop + "px"});
				if( $.isIE ){
				    this.setCapture();
				}else{
				    window.captureEvents(Event.MOUSEMOVE);
				}
				$(div).css({'filter':'alpha(opacity=80)','opacity':0.8});
			}
		};
		div.onmousemove = function(e){
			var e = e ? e : event;
			if( mouseD == true ){
				var emX = e.x ? e.x : e.pageX;
				var emY = e.y ? e.y : e.pageY;
				var mrx = emX - mx;
				var mry = emY - my;
				$(div).css({left:parseInt(div.style.left) + mrx + "px",
								  top:parseInt(div.style.top) + mry + "px"});
				mx = emX;
				my = emY;
				
			}
		};
		div.onmouseup = function(){
			mouseD = false;
			alphaFlg = false;
			if( $.isIE ){
				div.releaseCapture();
			}else{
				window.releaseEvents(div.MOUSEMOVE);
			} 
			$(div).css({'filter':'alpha(opacity=100)','opacity':1});
		};
	}
	
	
}
$.fn.init.prototype = $.fn;
	
$.extend = $.fn.extend = function() {

	var target = arguments[0] || {}, 
	i = 1, length = arguments.length, deep = false, options;

	if (target.constructor == Boolean) {
		deep = target;
		target = arguments[1] || {};
		i = 2;
	}

	if (typeof target != "object" && typeof target != "function")
		target = {};

	if (length == i) {
		target = this;
		--i;
	}

	for (;i < length; i++)
		if ((options = arguments[i]) != null)

			for (var name in options) {
				var src = target[name], copy = options[name];
				if (target === copy)
					continue;

				if (deep && copy && typeof copy == "object" && !copy.nodeType)
					target[name] = jQuery.extend(deep, src
							|| (copy.length != null ? [] : {}), copy);
				else if (copy !== undefined)
					target[name] = copy;

			}

	return target;
};

$.extend({
	isIE : !-[1,],
	isArray : function(v){
	    return toString.apply(v) === '[object Array]';
	},
	isFunction : function(fn) {
		return fn instanceof Function;
	}

});

// AJAX
$.extend({
	get : function(url,data,callback){
		return $.ajax({
			url : url,
			data : data,
			success : callback,
			type : "GET"
		});
	},
	post : function(url,data,callback){
		return $.ajax({
			url : url,
			data :data,
			success : callback,
			type : "POST"
		});
	},
	ajax : function(s){
		var xhr = window.ActiveXObject
				? new ActiveXObject("Microsoft.XMLHTTP")
				: new XMLHttpRequest();
				
		var type = s.type.toUpperCase();
		var time = s.time ? s.time : 10000;
		var url = s.url;
		var sendBody  = this.formatParam(s.data);
		
		var timer = setTimeout(function(){
				if ( typeof s.timeout == "function" ) s.timeout();
				if ( xhr ) {
					xhr.abort();
					xhr = null;
				}
			    return true;
			},time);
			
		if ( 'GET' == type ) {
			url = [url, ( url.indexOf('?') == -1 ? '?' : '&') ,sendBody].join('');
			sendBody = null;
		}

		if ( ! s.cache ) {
		    url = [url, ( url.indexOf('?') == -1 ? '?' : '&') , "ajaxtimestamp=" , (new Date()).getTime()].join('');
		}

		xhr.open(type,url,s.async);
		if ( "POST" == type ) xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");

		xhr.onreadystatechange = function(){
			if( xhr.readyState == 4 ){
				if ( xhr.status == 200 ){
					if ( timer ) clearTimeout(timer);
					var text = xhr.responseText;
					if (s.success) s.success(text);
				}
			}
		}
		xhr.send( sendBody );	
		
	},
	formatParam:function(data){
		if ( ! data || typeof data != "object" ) return data;
		var k,r = [];
		for ( k in data ) {
			r.push([k,'=',encodeURIComponent(data[k])].join(''));
		}
		return r.join('&');
	}
})
分享到:
评论

相关推荐

    jQuery新浪微博头像裁切预览代码

    这个“jQuery新浪微博头像裁切预览代码”是一个实现这一功能的示例,它仿照了新浪微博的头像裁剪功能,让用户在上传图片前可以预览并调整裁剪区域,确保最终裁剪出的图片满足需求。 jQuery是一个广泛使用的...

    jquery实现的点击弹出遮罩背景并且可以拖动关闭的弹出层特效代码.zip

    本资源"jquery实现的点击弹出遮罩背景并且可以拖动关闭的弹出层特效代码.zip"提供了一个利用jQuery创建交互式弹出层的实例,该弹出层具有遮罩背景效果并支持通过拖动来关闭。 首先,我们需要理解jQuery中的基本概念...

    jQuery仿探探APP手机滑动切换特效

    【jQuery仿探探APP手机滑动切换特效】是一种在移动端网页设计中常见的交互效果,它模仿了探探APP中的卡片式滑动浏览体验。这种特效主要用于提升用户在浏览内容时的交互性和趣味性,尤其适用于展示一系列类似内容,如...

    Jquery仿IGoogle实现可拖动窗口示例代码

    google可谓是ajax的特效用的淋漓尽致,google suggest, google map,igoogle 可拖动窗口等等…今天要做一个网站的类似效果,仿照iGoogle做了一个简单的小demo。 这个的demo是根据一个Jquery的框架直接做出来的:...

    网页实现xp风格窗口

    在网页设计中,XP风格窗口是一种仿照微软Windows XP操作系统界面设计的网页元素,它能够为用户带来熟悉的操作体验。这种设计通常包括窗口标题栏、最大化/最小化按钮、关闭按钮以及可拖动和拉伸的功能。在本项目中,...

    jQuery-QQ音乐项目

    jQuery是一个轻量级的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。jQuery的核心特性包括: 1. **选择器**:jQuery提供了丰富的选择器,如ID选择器(#id)、类选择器(.class)、属性选择器([attr]...

    jquery仿ps图像标尺寸表参考线测量图片位置尺寸大小

    首先,jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画制作和Ajax交互等任务。在仿照PS的参考线和尺寸测量功能时,jQuery可以帮助我们动态地创建和更新HTML元素,实现用户交互。 1. **参考线...

    jquery仿iphone向右滑动解锁效果源码.zip

    首先,jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。在这个项目中,jQuery将被用来处理用户的触摸事件,检测滑动方向,并触发相应的解锁动作。 要实现这个效果,你...

    仿照Igoogle实例

    3. **拖动功能**:为了实现Igoogle的模块可拖动特性,我们需要使用JavaScript或jQuery等库来实现事件监听和元素位置更新。通常,我们会监听鼠标按下、移动和释放事件,计算鼠标移动的距离,并相应地改变`div`的位置...

    JS实现Excel功能

    jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理和Ajax交互等任务。在这个Excel模拟器中,jQuery可以用来更方便地选择和操作DOM元素,如快速获取或设置单元格的值,以及更流畅地处理键盘和鼠标事件...

    thinkphp无限分类

    此外,为了便于用户管理无限分类,可以考虑使用拖拽排序插件,如jQuery UI的Sortable,让用户通过拖拽调整分类顺序。后端需要接收排序后的序列,然后更新每个分类的`sort_order`字段,以保持正确的显示顺序。 总结...

Global site tag (gtag.js) - Google Analytics