修改或扩展jQuery原生方法的代码实例

修改或者扩展jQuery的方法代码实例:

毫无疑问,jQuery是一款功能强大且使用方便的类库。

从它的广泛应用可以证实上面的观点,但是正所谓人无完人,金无足赤,jQuery也是如此,并非在任何时候或者场合都能够完美的完成我们的任务,所以有事以后就需要对jQuery原有的方法进行扩展修改,但是最好方法仍然具有原来的功能。

代码实例:

代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>我们</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$.prototype.val = function (base) {
  return function () {
    var s = this;
    var a = "data-property";
    var p = s.attr(a);
    var isset = arguments.length > 0;
    var v = isset ? arguments[0] : null;
        
    if (isset&&typeof(base)=="function") {
      base.call(s, v);
    }
    else {
      v = base.call(s);
    }
    if (p) {
      if (isset) {
        s.attr(p, v);
        return s
      }
      else {
        return s.attr(p)
      }
    }
    else {
      if (!s.is(":input")){
        if (isset) {
          s.text(v); return s;
        }
        else {
          return s.text();
        }
      }
      else {
        return isset ? s : v;
      }
    }
  }
}($.prototype.val);
$(document).ready(function(){
  $("#show").html($("#lbl").val()+"<br>"+$("#txt").val());
})
</script>
</head>
<body>
<span id="lbl">我们</span>  
<input type="text" id="txt" value="softwhy.com" />
<input type="checkbox" value="antzone" />
<div id="show"></div>
</body>
</html>

上面的代码毫无疑问是对jQuery的val()方法做的扩展,下面介绍一下它的实现过程。

代码注释:

1.$.prototype.val = function (base) {}(($.prototype.val),修改jQuery原来的val()方法,这里采用闭包的方式,传递的参数是原来的val()方法,以保持原来val()方法的功能。
2.return function (){},返回一个函数对象。
3.var s = this,将this的指向引用赋值给变量s,这里的this是指向jQuery对象实例的。
4.var a = "data-property",声明一个变量并赋值,关于它的更多内容面会介绍。
5.var p = s.attr(a),其实data-property就是标签上的一个自定义属性,那么这段代码就是获取此属性值。
6.var isset = arguments.length > 0,判断修改后的val()方法是否传递了参数。
7.var v = isset ? arguments[0] : null,如果传递参数,那么久获取第一个参数,其他的忽略。
8.if (isset&&typeof(base)=="function") {
  base.call(s, v);
},如果传递了参数,且base参数是一个函数,那么就调用base函数设置元素

(0)

相关推荐

  • Jquery 的扩展方法总结

    一.方式列表: 1.jQuery.extend(Object); // jQuery 本身的扩展方法 2.jQuery.fn.extent(Object); // jQuery 所选对象扩展方法 二.调用示例: 1.jQuery 本身的扩展方法实例如下: 复制代码 代码如下: jQuery.extend({ Meg: function (message) { alert(message); }, MegToo: function (messageToo) { alert(messageToo);

  • jQuery扩展_动力节点Java学院整理

    当我们使用jQuery对象的方法时,由于jQuery对象可以操作一组DOM,而且支持链式操作,所以用起来非常方便. 但是jQuery内置的方法永远不可能满足所有的需求.比如,我们想要高亮显示某些DOM元素,用jQuery可以这么实现: $('span.hl').css('backgroundColor', '#fffceb').css('color', '#d85030'); $('p a.hl').css('backgroundColor', '#fffceb').css('color', '

  • Jquery 扩展方法

    网上搜索了信息在编写JQUERY扩展方法有两种,一种是使用jquery.fn.extend,一种是jquery.extend. jquery.fn表示jquery.prototype,,给jquery对象添加方法.刚好用到扩展方法,并且使用jquery.fn,这里就写下jquery.fn的用法,这些网上很多,蛮写蛮写 比如当点击 button时弹出一个textbox的值加一个参数值 复制代码 代码如下: jquery.fn.extend({ alertMessage:function(messa

  • 修改或扩展jQuery原生方法的代码实例

    修改或者扩展jQuery的方法代码实例: 毫无疑问,jQuery是一款功能强大且使用方便的类库. 从它的广泛应用可以证实上面的观点,但是正所谓人无完人,金无足赤,jQuery也是如此,并非在任何时候或者场合都能够完美的完成我们的任务,所以有事以后就需要对jQuery原有的方法进行扩展修改,但是最好方法仍然具有原来的功能. 代码实例: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-

  • bat批处理批量修改文件扩展名的方法

    有的时候我们可能会遇到,在一个文件夹内有很多个文件,我们需要修改这些文件的扩展名,当然我们可以一个一个的修改,可是如果有很多文件,那就很麻烦了,所以今天就教大家批量修改文件扩展名的方法,希望大家能够灵活运用. 这里假设你要把扩展名为.gif的文件都改成.jpg格式,那么具体方法如下: 1.首先进入需要改扩展名的文件夹内新建一个记事本 2.在记事本中输入如下内容 复制代码 代码如下: ren *.gif *.jpg 3.将记事本的扩展名改名为.bat 4.双击运行bat文件即可批量将该文件夹下的所

  • C#获取并修改文件扩展名的方法

    本文实例讲述了C#获取并修改文件扩展名的方法.分享给大家供大家参考.具体分析如下: 这里使用C#编程的方法改变文件扩展名的文件,必须使用Path类. Path类用来解析文件系统路径的各个部分.静态方法Path.ChangeExtension方法可以用来改变文件扩展名.可用Path.GetExtension方法可用来取得的文件扩展名. 复制代码 代码如下: string filePath = @"c:\file.txt"; Console.WriteLine(filePath); Con

  • Javascript原生ajax请求代码实例

    这篇文章主要介绍了Javascript原生ajax请求代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 class Ajax{ constructor(url, method, data, callback_suc, callback_err, callback_run){ this.RT = true;//默认为异步请求 this.url = url; this.method = method || "POST";

  • 多种类型jQuery网页验证码插件代码实例

    html <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,m

  • Javascript中3种实现继承的方法和代码实例

    继承是我们在实现面向对象编程的时候很重要的一个手段.虽然我们讲不能过度继承,多利用组合代替继承,但是继承总是免不了的.这里要讨论的就是Javascript中的继承机制. Javascript中实际上是没有继承的概念的,但是我们可以通过一些手段来模仿实现它.这种继承实际上把一个对象复制到另外一个对象内部.你需要注意的是所有的本地类和宿主类是不能作为基类被继承的,主要是为了安全方面的考虑. Javascript中的继承大约有三类:1.对象冒充:2.原型继承:3.二者的混合. 一.对象冒充 其实对象冒

  • JQuery index()方法使用代码

    学生科的网站首页有19个Repeater控件.6个div块的tabs切换. 做tabs切换总不能一个个去写方式吧:(代码如下....) 复制代码 代码如下: $(function() { $("#tabs a:eq(0),#tabs2 a:eq(0),#dbt_l_t_tabs a:eq(0),#dbt_r_t_tabs a:eq(0)").addClass("m_on"); $("#tabs a:gt(0),#tabs2 a:gt(0),#dbt_l_t

  • JQuery显示隐藏DIV的方法及代码实例

    1. 如果在载入是隐藏: 复制代码 代码如下: <head> <script language="javascript"> function HideWeekMonth() {     $("#tt1").hide();     $("#tt2").hide(); } </script> </head> <body onLoad="HideWeekMonth()">

  • 12种实现301网页重定向方法的代码实例(含Web编程语言和Web服务器)

    为什么需要使用301重定向: 1. 保留搜索引擎的排名: 301 重定向是最有效的方法,不会影响到搜索引擎对页面的排名. 2. 保留访客和流量: 如果你将页面链接到大量方法可以访问过的地址,如果不是用重定向的话你就会失去这些用户(不解)原文:If you move your popular page to which a lot of visitors have already linked, you may lose them if you don't used redirect method

  • PHP中读取文件的8种方法和代码实例

    整理了一下PHP中读取文件的几个方法,方便以后查阅. 1.fread string fread ( int $handle , int $length ) fread() 从 handle 指向的文件中读取最多 length 个字节.该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况. fread() 返回所读取的字符串,如果出错返回 FALSE. 复制代码

随机推荐