自己封装的一些简单的jQuery插件

  俗话说的好:温故而知新,可以为师矣!

  学习是一个人一辈子的事情。于是乎趁着今天休息,回顾了一些知识点,可能做的不够完美,请多多指教。

/**
* Created by Administrator on 2017/5/6.
*/

/**
* 格式化日期
* @param dt 日期对象
* @returns {string} 返回值是格式化的字符串日期
*/
function getDates(dt) {
  var str = "";//存储时间的字符串
  //获取年
  var year = dt.getFullYear();
  //获取月
  var month = dt.getMonth() + 1;
  //获取日
  var day = dt.getDate();
  //获取小时
  var hour = dt.getHours();
  //获取分钟
  var min = dt.getMinutes();
  //获取秒
  var sec = dt.getSeconds();
  month = month < 10 ? "0" + month : month;
  day = day < 10 ? "0" + day : day;
  hour = hour < 10 ? "0" + hour : hour;
  min = min < 10 ? "0" + min : min;
  sec = sec < 10 ? "0" + sec : sec;
  str = year + "年" + month + "月" + day + "日 " + hour + ":" + min + ":" + sec;
  return str;
}
/**
* 获取指定标签对象
* @param id 标签的id属性值
* @returns {Element}根据id属性值返回指定标签对象
*/
function my$(id) {
  return document.getElementById(id);
}
/**
* 设置元素的文本内容
* @param element 任意元素
* @param text 任意文本内容
*/
function setInnerText(element, text) {
  if (typeof(element.textContent) == "undefined") {
  element.innerText = text;
  } else {
  element.textContent = text;
  }
}
/**
* 获取元素的文本内容
* @param element 任意元素
* @returns {*} 任意元素中的文本内容
*/
function getInnerText(element) {
  if (typeof(element.textContent) == "undefined") {
  return element.innerText;
} else {
  return element.textContent;
  }
}
/**
* 获取父级元素中的第一个子元素
* @param element 父级元素
* @returns {*} 父级元素中的子级元素
*/
function getFirstElement(element) {
  if (element.firstElementChild) {
  return element.firstElementChild;
  } else {
  var node = element.firstChild;
  while (node && node.nodeType != 1) {
  node = node.nextSibling;
  }
  return node;
  }
}
/**
* 获取父级元素中的最后一个子元素
* @param element 父级元素
* @returns {*} 最后一个子元素
*/
function getLastElement(element) {
  if (element.lastElementChild) {
  return element.lastElementChild;
  } else {
  var node = element.lastChild;
  while (node && node.nodeType != 1) {
  node = node.previousSibling;
  }
  return node;
  }
}
/**
* 获取某个元素的前一个兄弟元素
* @param element 某个元素
* @returns {*} 前一个兄弟元素
*/
function getPreviousElement(element) {
  if (element.previousElementSibling) {
  return element.previousElementSibling
  } else {
  var node = element.previousSibling;
  while (node && node.nodeType != 1) {
  node = node.previousSibling;
  }
  return node;
  }
}
/**
* 获取某个元素的后一个兄弟元素
* @param element 某个元素
* @returns {*} 后一个兄弟元素
*/
function getNextElement(element) {
  if (element.nextElementSibling) {
  return element.nextElementSibling
  } else {
  var node = element.nextSibling;
  while (node && node.nodeType != 1) {
  node = node.nextSibling;
  }
  return node;
  }
}
/**
* 获取某个元素的所有兄弟元素
* @param element 某个元素
* @returns {Array} 兄弟元素
*/
function getSiblings(element) {
  if (!element)return;
  var elements = [];
  var ele = element.previousSibling;
  while (ele) {
  if (ele.nodeType === 1) {
  elements.push(ele);
  }
  ele = ele.previousSibling;
  }
  ele = element.nextSibling;
  while (ele) {
  if (ele.nodeType === 1) {
  elements.push(ele);

  }
  ele = ele.nextSibling;
  }
  return elements;
}
/**
* 返回当前浏览器是什么类型的浏览器
*/
function userBrowser(){
  var browserName=navigator.userAgent.toLowerCase();
  if(/msie/i.test(browserName) && !/opera/.test(browserName)){
  console.log("IE");
  }else if(/firefox/i.test(browserName)){
  console.log("Firefox");
  }else if(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName)){
  console.log("Chrome");
  }else if(/opera/i.test(browserName)){
  console.log("Opera");
  }else if(/webkit/i.test(browserName) &&!(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName))){
  console.log("Safari");
  }else{
  console.log("不知道什么鬼!");
  }
}

function getStyle(element,attr) {
  return element.currentStyle?element.currentStyle[attr]:window.getComputedStyle(element,null)[attr];
}
//缓动动画函数的封装
function animate(element, json,fn) {
  clearInterval(element.timeId);
  element.timeId = setInterval(function () {
  var flag=true;
  for (var attr in json) {
  if(attr=="opacity"){
  var current = getStyle(element, attr)*100;
  var target=json[attr]*100;
  //每次移动的步数
  var step = (target - current) / 10;
  //每次移动步数都是整数(比较大的数字)
  step = step > 0 ? Math.ceil(step) : Math.floor(step);
  current += step;//移动后的当前的像素
  element.style[attr] = current/100;
  }else if(attr=="zIndex"){
  element.style[attr]=json[attr];
  }else{
  var current = parseInt(getStyle(element, attr));
  var target=json[attr];
  //每次移动的步数
  var step = (target - current) / 10;
  //每次移动步数都是整数(比较大的数字)
  step = step > 0 ? Math.ceil(step) : Math.floor(step);
  current += step;//移动后的当前的像素
  element.style[attr] = current + "px";
  }
  if (current != target) {//到达目标后停止计时器
  flag=false;
  }
}
  if(flag){
  clearInterval(element.timeId);//清理计时器
  if(fn){
  fn();
  }
}
  console.log("target:" + target + ",current:" + current + ",step:" + step);
  }, 20);
}

//关于事件参数对象的工具的代码
var evtTools={
  //事件参数
  evt:function (e) {
    return window.event?window.event:e;
  },
  //页面向左卷曲出去的距离
  left:function () {
    return window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft||0;
  },
  //页面向上卷曲出去的距离
  top:function () {
    return window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop||0;
  },
  //事件参数对象中的属性封装---可视区域的横坐标
  clientX:function (e) {
    return this.evt(e).clientX;
  },
  //事件参数对象中的属性封装---可视区域的纵坐标
  clientY:function (e) {
    return this.evt(e).clientY;
  },
  pageX:function (e) {
    return this.evt(e).pageX?this.evt(e).pageX:this.left()+this.clientX(e);
  },
  pageY:function (e) {
    return this.evt(e).pageY?this.evt(e).pageY:this.top()+this.clientY(e);
  }
};

//当浏览器的宽度发生变化,就获取浏览器(页面可视区域的宽度)
function getClient() {
  return{
  width:window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth||0,
  height:window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight||0
  }
}

时间: 2024-11-10 08:12:44

自己封装的一些简单的jQuery插件的相关文章

图片延迟加载并等比缩放,一个简单的JQuery插件

使用方法: $(".viewArea img").zoom({height:74,width:103}); (function($){    $.fn.zoom = function(settings){                //一些默认配置:                settings = $.extend({                    height:0,                    width:0,                    load

编写一个简单的Jquery插件

1.实现内容 定义一个简单的jquery插件,alert传递进来的参数 2.插件js文件(jquery.showplugin.js) (function ($) { //定义插件中的方法 var methods = { //Object showName: function (name) { alert('Name:' + name); }, showAge: function (age) { alert('Age' + age); } }; //method方法名 $.fn.showplugi

一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子

页面代码:   <html>     <!-- 引入相关的js文件,相对路径  -->     <script type="text/javascript" src="js/jquery.js"></script>       <script type="text/javascript" src="js/ajaxfileupload.js"></script&g

写了一个简单的jquery插件(初恋啊)

用了好久的jquery了,却没有写过插件,今天研究了一个别人的插件和一些文章,总算搞清楚了jquery插件一些写法, 代码写了一个div当鼠标事件发生时的宽高变化情况,基础,代码基础,基础好了,才能研究深入的东西. 1 (function(jQuery){ 2 /* 3 * 插件应该返回一个JQuery对象,以便保证插件的可链式操作. 4 * JQuery插件的机制:jQuery提供了2个用于扩展jQuery功能的方法 5 * jQuery.fn.extend() 6 * jQuery.exte

创建简单的jquery插件

</pre><p>1.创建基本插件的通用方法:</p><p></p><pre name="code" class="html">$.fn.greenify = function() { this.css( "color", "green" ); }; $( "a" ).greenify(); 2.增加链式的调用:在上面的方法中增加thi

转:一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子

页面代码: <html>    <!-- 引入相关的js文件,相对路径  -->    <script type="text/javascript" src="js/jquery.js"></script>      <script type="text/javascript" src="js/ajaxfileupload.js"></script> &l

最简单的jQuery插件

<script src="./jquery-1.7.1.min.js"></script><script>;(function($,undefined){ $.fn.abcabc=function() { console.log($(this).val()); };})(jQuery);$(document).ready(function(){ $('#b1').on('click',function() { $('#t1').abcabc(); }

自己做jQuery插件:将audio5js封装成jQuery语音播放插件

日前的一个项目需要用到语音播放功能.发现Audio5js符合需求且使用简单,又鉴于jQuery控件便于开发操作,于是有了以下的封装. 首先先简单介绍一下Audio5js吧. Audio5js是一个能够帮助你解决类似这样的浏览器兼容性问题的js类库,轻量级并且能够很优雅的使用flash向前兼容老版本的浏览器. 其主要特性: 拥有完整API来控制“加载”,“播放”,“暂停”,“音量”和“查找” 并且可以得到播放内容的具体相关信息 不依赖任何类库 兼容版本浏览器,包括:IE8, IE9, Chrome

Jquery插件使用方法

在实际开发工作中,总会碰到像滚动,分页,日历等展示效果的业务需求,对于接触过jQuery以及熟悉jQuery使用的人来说,首先想到的肯定是寻找现有的jQuery插件来满足相应的展示需求.目前页面中常用的一些组件,都有多种jQuery插件可供选择,网络上也有很多专门收集jQuery插件的网站.利用jQuery插件确实可以给我们的开发工作带来便捷,但是如果只是会简单使用,而对其中的原理不甚了解,那么在使用过程中碰到问题或者对插件进行定制开发时就会有诸多疑惑.本文的目的就是可以快速了解jQuery插件