博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11月20日学习内容整理:jquery插件
阅读量:6277 次
发布时间:2019-06-22

本文共 3868 字,大约阅读时间需要 12 分钟。

补充:

》》》链式操作本质上就是返回当前操作的对象,意思是无论对一个jquery对象进行怎样的操作最后都会再返回当前操作的对象,这也就是我们为什么能连续写方法的原因

》》》removedata("key")  删除之前赋的值

一、插件:给别人用的,jquery的命名空间下添加新的功能。多用于插件开发者向 jQuery 中添加新函数时使用。

1、给jquery添加扩展

》》》$.extend({

  名字:function(){

    执行语句;    

  }

})

》》》外部使用:$.名字()就会执行函数中的语句

2、给jquery对象添加扩展

》》》$.fn.extend({

  名字:function(){

    执行语句;

  }

})

》》》外部使用:$(选择器).名字()就会执行函数中的语句

3、补充::::

》》》》函数中的执行语句也可以是调用某个函数,这样外部一调用名字就可以直接执行某个函数了

重要重要重要》》》》两种扩展中函数的语句中this就代表谁调用谁就是this

 

 

》》》》注意注意注意:::::

1、自己写插件时的几点:

(1)全局变量污染(指的是我们引用别人的插件,但是插件中恰好把我们所创建的全局变量修改了)

》》》解决办法:JS中函数限制变量的作用域 ,所以我们在写插件的时候要用函数包裹我们扩展的那些变量和函数

(2)全局不可以访问函数内部定义的变量,函数内部可以访问全局变量

(3)如何防止$被修改(指的是别人写的插件可能会把$修改成别的值,一旦发生这样的情况,后续的代码就无法继续执行了)

》》》解决办法:还是包裹成一个函数,用传参的方式,我们显式的把jQuery传进去,在函数内部用jq表示jQuery

(4)用匿名函数来简化我们保存自己变量或函数的操作,因为匿名函数外部价格括号就可以调用,省去了我们再自己设置变量和函数调用的麻烦

 

举例:

》》》》jQuery扩展示例.html    --> 演示了如何给jQuery添加扩展

    
jQuery扩展示例
111

 

》》》》jQuery扩展示例2.html   --> 演示了如何把之前的校验代码弄成一个jQuery扩展,就是写在一个validate函数中

    
登陆校验作业

 

》》》》jQuery扩展示例3.html   --> 演示了如何把jQuery扩展放到单独的JS文件中

    
登陆校验作业

a = function(jq){    function f2(arg) {        var $currEle = arg;        console.log(arg);        $currEle.find(":submit").on("click", function () {        // 每次判断之前都清空之前的错误信息        jq(".error").text("");        //   定义一个用于判断是否进行下一个事件的标志位        var flag = true;        // 校验        // 找需要校验的input        $currEle.find("input.require").each(function () {            // this  --> 当前的input框  --> DOM对象            var currVal = jq(this).val();  // 取到当前input框的值            if (currVal.length === 0){  // 根据值的长度和0去比较                // 提示错误信息                // $(this).next()  --> 找到span标签                // 取label的text来拼接错误信息                // $(this).prev();  --> 取到当前input标签前面的label标签                var msgQz = jq(this).prev().text();                jq(this).next().text(msgQz + "不能为空");                flag = false;                return false;  // 跳出each循环            }        });        return flag;    });    }        // 文档加载完之后执行    jq(document).ready(function () {//         validate();         jq("#f1").check();    });    // 给我的jQuery对象添加了一个名叫check的扩展    jq.fn.extend({        check: function () {            // this表示的是的当前操作的标签            f2(this);        }    }); };// 为了防止某些坏人把$赋值成别的变量a(jQuery);

 

》》》extend.js --> 我们自己写的jQuery扩展文件

上面的那部分是没有优化的方式,即我们自己定义变量和函数
下面的是使用自执行函数优化的方式(以后我们都用这种方式)

// 匿名函数 (function (jq) {     function f2(arg) {        var $currEle = arg;        console.log(arg);        $currEle.find(":submit").on("click", function () {        // 每次判断之前都清空之前的错误信息        jq(".error").text("");        //   定义一个用于判断是否进行下一个事件的标志位        var flag = true;        // 校验        // 找需要校验的input//        $("form input[type='text'], form input[type='password']")        $currEle.find("input.require").each(function () {            // this  --> 当前的input框  --> DOM对象            var currVal = jq(this).val();  // 取到当前input框的值            if (currVal.length === 0){  // 根据值的长度和0去比较                // 提示错误信息                // $(this).next()  --> 找到span标签                // 取label的text来拼接错误信息                // $(this).prev();  --> 取到当前input标签前面的label标签                var msgQz = jq(this).prev().text();                jq(this).next().text(msgQz + "不能为空");                flag = false;                return false;  // 跳出each循环            }        });        return flag;    });    }        // 文档加载完之后执行    jq(document).ready(function () {//         validate();         jq("#f1").check();    });    // 给我的jQuery对象添加了一个名叫check的扩展    jq.fn.extend({        check: function () {            // this表示的是的当前操作的标签            f2(this);        }    }); })(jQuery);

 

转载于:https://www.cnblogs.com/wanghl1011/articles/7866656.html

你可能感兴趣的文章
poi 导入导出的api说明(大全)
查看>>
Mono for Android 优势与劣势
查看>>
将图片转成base64字符串并在JSP页面显示的Java代码
查看>>
js 面试题
查看>>
sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
查看>>
腾讯云下安装 nodejs + 实现 Nginx 反向代理
查看>>
Javascript 中的 Array 操作
查看>>
java中包容易出现的错误及权限问题
查看>>
AngularJS之初级Route【一】(六)
查看>>
服务器硬件问题整理的一点总结
查看>>
SAP S/4HANA Cloud: Revolutionizing the Next Generation of Cloud ERP
查看>>
Mellanox公司计划利用系统芯片提升存储产品速度
查看>>
白帽子守护网络安全,高薪酬成大学生就业首选!
查看>>
ARM想将芯片装进人类大脑 降低能耗是一大挑战
查看>>
Oracle数据库的备份方法
查看>>
Selenium 自动登录考勤系统
查看>>
关于如何以编程的方式执行TestNG
查看>>
智能照明造福千家万户 家居智能不再是梦
查看>>
物联网如何跳出“看起来很美”?
查看>>
浅谈MySQL 数据库性能优化
查看>>