jQuery
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。推荐一个学习Jquery网站:http://jquery.cuishifeng.cn/
Jquery 分为三个版本:1.0x 2.0x 3.0x(推荐使用1.0x,因为兼容性更好。)jQuery包又分为:压缩版和普通版(学习建议用普通版可以看源码,上线中要用压缩版)
jquery和DOM之间可以互相转换:
jQuery对象[0] ==> DOM对象
DOM对象 ==> $(DOM对象)
(如果jQuery对象封装的功能不够强大,可以利用他们之间的互相转换,来用DOM扩写jquery对象)
查找元素,DOM有10个左右语句,jQuery中有以下:
选择器
选择器,直接找到某个或者某类标签 1, id $('#id') 2, class $(".class") 3, 标签 $("a") 4, 组合 $("#i1,.c1,a") 找到id为1,class为c1,标签为a 5, 层级 $("i1 a") 找id为1下面的所有a标签,子子孙孙 $("i1">"a") 找id为1下a标签(第一层),儿子 6, 基本筛选器 :first 获取匹配的第一个元素 :not :last 7, :eq(index) 根据索引来找 :gt(index) :lt(index) $('a:eq(2)') 找a标签的索引为2的元素 8, ["属性"] $("alex") 具有alex属性的标签 $('[alex="123"]') alex='123'的标签 表单选择器:其实学完上述,完全不用学对表单的查找。表单只不过在上述的简写 <input type='text'/> <input type='text'/> <input type='file'/> <input type='password'/> $('input[type="text"]') 通过属性选择器找 $(':text') 通过表单选择器找(可以看出是上述的简写) 表单属性跟上述类似
实例:全选,反选,取消
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <table border="1" id="tb"> <input type="button" value="全选" onclick="selectAll();"/> <input type="button" value="反选" onclick="reverseAll();"/> <input type="button" value="取消" onclick="cancelAll();"/> <thead> <tr> <th>选项</th> <th>IP</th> <th>端口</th> </tr> </thead> <tbody> <tr> <td><input type="checkbox"/></td> <td>10.1.1.1</td> <td>80</td> </tr> <tr> <td><input type="checkbox"/></td> <td>10.1.1.2</td> <td>8080</td> </tr> <tr> <td><input type="checkbox"/></td> <td>10.1.1.3</td> <td>8000</td> </tr> </tbody> </table> <script src="jquery-1.12.4.js"></script> <script> function selectAll() { $('#tb :checkbox').prop('checked',true); } function cancelAll() { $('#tb :checkbox').prop('checked',false); } // 第一种方式:原始的DOM方式 // function reverseAll() { // var tb = $('#tb :checkbox'); // for(var i=0;i<tb.length;i++){ // if(tb[i].checked){ // tb[i].checked = false; // } // else{ // tb[i].checked = true; // } // } // } // 第二种方式:也是利用DOM方式 // function reverseAll() { // $('#tb :checkbox').each(function () { // //this代指当前循环的每一个元素,如果函数中有参数k,k则表示下标 // //反选 // //console.log(this) 此时的this对象为DOM对象 // //console.log($(this)), // if (this.checked) { // this.checked = false; // } else { // this.checked = true; // } // }) // } //第三种方式:利用jQuery方式 // function reverseAll() { // $('#tb :checkbox').each(function () { // if($(this).prop('checked')){ // $(this).prop('checked',false); // }else{ // $(this).prop('checked',true); // } // }) // } //第四种方式:三元运算 function reverseAll() { $('#tb :checkbox').each(function () { var v = $(this).prop('checked')?false:true; $(this).prop('checked',v); }) } </script> </body> </html>
总结:
1, $(this).prop('checked') 获取值
2, $(this).prop('checked',false) 设置值
3, $('#tb :checkbox').each() Jquery方法内置循环
$('#tb :checkbox').each(function (k) {
//k则表示当前索引
//this,DOM,当前循环的元素 $(this)
}
4, 三元运算
var v = 条件?真值:假值
筛选器:(常用)
$('i1').next() 下一个标签 $('i1').prev() 上一个标签 $('i1').parent() 父标签 $('i1').children() 孩子标签 $('i1').siblings() 兄弟标签 $('i1').find('.content') 在子子孙孙中找class为content的标签 $('li').eq(1) 根据索引进行筛选,注意和选择器的区别 $('li:eq(1)')(效果是一样的) 区别:一个是字符串,一个是变量 $('#i1').nextUntil('i5') 查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止 $('#i1').nextAll() 从i1向下所有的 $('#i1').prevAll() 从i1向上所有的 $('#i1').prevUntil('i5') 从i1向上直到i5 $('i1').parents() 从父标签一直找到祖宗 $('i1').parentsUntil('.c1') 从父标签一直找到'c1'为止
示例2:筛选器以及Tab菜单示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .item .header{ height: 38px; background-color: #2568aa; color: white; line-height: 35px; } .hide{ display: none; } </style> </head> <body> <div> <div class="item"> <div id="i1" class="header">菜单一</div> <div class="content hide"> <div>内容一</div> <div>内容一</div> <div>内容一</div> </div> </div> <div class="item"> <div class="header">菜单二</div> <div class="content hide"> <div>内容二</div> <div>内容二</div> <div>内容二</div> </div> </div> <div class="item"> <div class="header">菜单三</div> <div class="content hide"> <div>内容三</div> <div>内容三</div> <div>内容三</div> </div> </div> </div> <script src="jquery-1.12.4.js"></script> <script> // 1,第一种方式jQuery(DOM的方式也能实现,只不过实现起来比较复杂,前面写过) //$('.header').click(function () { // $(this).next().removeClass('hide') // $(this).parent().siblings().find('.content').addClass('hide') // }) // 2,第二种方式jQuery(链式编程) $('.header').click(function () { $(this).next().removeClass('hide').parent().siblings().find('.content').addClass('hide') }) </script> </body> </html>
总结:
1, jQuery绑定事件
$('.header').click(function () {
xxxx
}
2, 添加样式和移除样式
$('.i1').addClass('.hide')
$('.i1').removeClass('.hide')
3, 筛选器实在选择器的基础之上再进行选择(下面为常用的筛选器)
$(this).next() 下一个标签
$(this).prev() 上一个标签
$(this).parent() 父标签
$(this).children() 孩子标签
$(this).siblings() 兄弟标签
$(this).find('.content') 在子子孙孙中找class为content的标签,同一级标签不能用find
4, jQuery支持链式编程
文本操作
$(..).text() #获取文本内容 $(..).text("<a>1</a>") #设置文本内容 $(..).html() # $(..).html("<a>1</a>") # $(..).val() #获取value值 $(..).val(..) #设置value值
示例:模态编辑框2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .modal{ position: fixed; top:50%; left: 50%; margin-top: -200px; margin-left: -250px; border: 1px black solid; height: 400px; 500px; background: #ddd; z-index: 10; } #i1{ border: 1px black solid; } .shadow{ position: fixed; top: 0; bottom: 0; left: 0; right: 0; background: black; opacity: 0.6; z-index: 9; } .hide{ display: none; } </style> </head> <body> <a id="i1">添加</a> <table border="1"> <tr> <td>10.1.1.1</td> <td>80</td> <td> <a class="edit">编辑</a> | <a>删除</a> </td> </tr> <tr> <td>10.1.1.2</td> <td>8080</td> <td> <a class="edit">编辑</a> | <a>删除</a> </td> </tr> <tr> <td>10.1.1.3</td> <td>8000</td> <td> <a class="edit">编辑</a> | <a>删除</a> </td> </tr> </table> <div class="modal hide"> <div> <input name="hostname" type="text"> <input name="port" type="text"> </div> <div> <input id="i2" type="button" value="确定"> <input id="i3" type="button" value="取消"> </div> </div> <div class="shadow hide"> </div> <script src="jquery-1.12.4.js"></script> <script> $("#i1").click(function () { $(".modal, .shadow").removeClass('hide'); $('.modal input[type="text"]').val(""); }); $("#i3").click(function () { // $(this).parent().addClass('hide').next().addClass('hide') $(".modal, .shadow").addClass('hide') }); $(".edit").click(function () { $(".modal, .shadow").removeClass('hide'); var tds = $(this).parent().prevAll(); //循环获取tds中的内容 //复制给input标签中的value var port = $(tds[0]).text(); var host = $(tds[1]).text(); $('.modal input[name="hostname"]').val(host); $('.modal input[name="port"]').val(port); }) </script> </body> </html>
样式操作
addClass() removeClass() toggleClass #如果存在(不存在)就删除(添加)一个类。
示例:样式操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .hide{ display: none; } </style> </head> <body> <input id="i1" type="button" value="开关"> <div class="c1 hide">hello world</div> <script src="jquery-1.12.4.js"></script> <script> //第一种方式: // $("#i1").click(function () { // if($(".c1").hasClass("hide")){ // $(".c1").removeClass('hide'); // }else{ // $(".c1").addClass('hide'); // } // }); //第二种方式: $("#i1").click(function () { $(".c1").toggleClass('hide') }) </script> </body> </html>
属性操作
#专门做自定义的属性的 $(..).attr() #获取属性值 $(..).attr('n','v') #设置属性值 $(..).removeAttr('n') #移除属性值 <input type="checkbox" id="i1" checked="checked"/> #DOM方式选中 $('#i1').attr('checked','checked') #Jquery选中操作,第一次可以,然后取消(removeAttr),如果再次选中会出问题,发现选中不了,jQuery1和jQuery2版本都有此 问题(bug),即Query3版本中才得到解决,在版本1中,可以用prop来专门解决这个问题。 #专门用于checkbox(复选),radio(单选) $(..).prop() $(..).prop('checked') #获取值 $('#i1').prop('checked',true) #设置值 $('#i1').prop('checked',false)
示例:通过属性实现模态编辑框(需要在上述模态编辑框2的基础上增加td属性,属性值和下面输入框中值建立关联)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .modal{ position: fixed; top:50%; left: 50%; margin-top: -200px; margin-left: -250px; border: 1px black solid; height: 400px; 500px; background: #ddd; z-index: 10; } #i1{ border: 1px black solid; } .shadow{ position: fixed; top: 0; bottom: 0; left: 0; right: 0; background: black; opacity: 0.6; z-index: 9; } .hide{ display: none; } </style> </head> <body> <a id="i1">添加</a> <table border="1"> <tr> <td target="hostname">10.1.1.1</td> <td target="port">80</td> <td> <a class="edit">编辑</a> | <a>删除</a> </td> </tr> <tr> <td target="hostname">10.1.1.2</td> <td target="port">8080</td> <td> <a class="edit">编辑</a> | <a>删除</a> </td> </tr> <tr> <td target="hostname">10.1.1.3</td> <td target="port">8000</td> <td> <a class="edit">编辑</a> | <a>删除</a> </td> </tr> </table> <div class="modal hide"> <div> <input name="hostname" type="text"> <input name="port" type="text"> </div> <div> <input id="i2" type="button" value="确定"> <input id="i3" type="button" value="取消"> </div> </div> <div class="shadow hide"> </div> <script src="jquery-1.12.4.js"></script> <script> $("#i1").click(function () { $(".modal, .shadow").removeClass('hide'); $('.modal input[type="text"]').val(""); }); $("#i3").click(function () { // $(this).parent().addClass('hide').next().addClass('hide') $(".modal, .shadow").addClass('hide') }); $(".edit").click(function () { $(".modal, .shadow").removeClass('hide'); var tds = $(this).parent().prevAll(); tds.each(function () { //获取target属性 var n = $(this).attr('target'); //获取td中的内容 var text = $(this).text(); var a1 = '.modal input[name="'; var a2 = '"]'; var tmp = a1 + n + a2; $(tmp).val(text) }); }) </script> </body> </html>
总结:这个跟上一个相比的好处,就是以后无论td增加多少列,比如除了hostname,port之外再增加IP列就无需再做任何的操作。
示例:TAB切换菜单
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .hide{ display: none; } .menu{ height: 38px; line-height: 38px; background: #eeeeee; } .active{ background-color: brown; } .menu .menu-item{ float: left; border-right: 1px solid red; padding: 0 5px; cursor: pointer; /*鼠标聚焦显示小手*/ } .content{ min-height: 100px; border: 1px solid #eeeeee; } </style> </head> <body> <div style=" 700px;margin: 0 auto"> <div class="menu"> <div class="menu-item active" a="1">菜单一</div> <div class="menu-item" a="2">菜单二</div> <div class="menu-item" a="3">菜单三</div> </div> <div class="content"> <div b="1">内容一</div> <div b="2" class="hide">内容二</div> <div b="3" class="hide">内容三</div> </div> </div> <script src="jquery-1.12.4.js"></script> <script> $('.menu-item').click(function () { $(this).addClass('active').siblings().removeClass('active'); //第一种方式:通过自定义属性的方式 // var tmp = $(this).attr('a'); // $('.content div[b="' + tmp + '"]').removeClass('hide').siblings().addClass('hide'); //第二种方式:通过索引的方式(这时就可以把自定义的属性‘a’和‘b’去掉) var ind = $(this).index(); $('.content').children().eq(ind).removeClass('hide').siblings().addClass('hide') }) </script> </body> </html>
总结:
1,小知识点,鼠标聚焦显示小手,cursor: pointer
2, jQuery对象操作可以使用index进行索引操作
3,第二种方式依然可以用字符串拼接的方式去实现。
$(".content").children(":eq(" + ind + ")").removeClass('hide').siblings().addClass('hide')
文档操作
$("ul").append(temp) 内部后面插入 $("ul").prepend(temp) 内部前面插入 appendTo 相当于把在‘temp’内部后面插入'ul',像append前后元素顺序调过来 prependTo 类似 $("ul").after(temp) 外部后面插入 $("ul").before(temp) 外部前面插入 var index = $('#t1').val(); $('ul li').eq(index).remove() 删除 $('ul li').eq(index).empty() 只删除内容(如果是项目,项目符号保留) clone 克隆
示例:内容操作(添加,删除,复制)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input id="t1" type="text"> <input id="a1" type="button" value="添加"> <input id="a2" type="button" value="删除"> <input id="a3" type="button" value="复制"> <ul id="ul"> <li>a</li> <li>b</li> <li>c</li> <li>d</li> <li>e</li> </ul> <script src="jquery-1.12.4.js"></script> <script> $('#a1').click(function () { var v = $('#t1').val(); var temp = "<li>" + v + "</li>" ; // $("ul").append(temp) $("ul").prepend(temp); // $("ul").after(temp) // $("ul").before(temp) }); $("#a2").click(function () { var index = $('#t1').val(); $('ul li').eq(index).remove(); // $('ul li').eq(index).empty(); }); $("#a3").click(function () { var index = $('#t1').val(); var v = $('ul li').eq(index).clone(); $("#ul").append(v); }); </script> </body> </html>
模态对话框(编辑,删除)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .modal{ position: fixed; top:50%; left: 50%; margin-top: -200px; margin-left: -250px; border: 1px black solid; height: 400px; 500px; background: #ddd; z-index: 10; } #i1{ border: 1px black solid; } .shadow{ position: fixed; top: 0; bottom: 0; left: 0; right: 0; background: black; opacity: 0.6; z-index: 9; } .hide{ display: none; } </style> </head> <body> <a id="i1">添加</a> <table border="1" id="tb"> <tr> <td target="hostname">10.1.1.1</td> <td target="port">80</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td target="hostname">10.1.1.2</td> <td target="port">8080</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td target="hostname">10.1.1.3</td> <td target="port">8000</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> </table> <div class="modal hide"> <div> <input name="hostname" type="text"> <input name="port" type="text"> </div> <div> <input id="i2" type="button" value="确定"> <input id="i3" type="button" value="取消"> </div> </div> <div class="shadow hide"> </div> <script src="../task/jquery-1.12.4.js"></script> <script> $("#i1").click(function () { $(".modal, .shadow").removeClass('hide'); $('.modal input[type="text"]').val(""); }); $("#i3").click(function () { // $(this).parent().addClass('hide').next().addClass('hide') $(".modal, .shadow").addClass('hide') }); $(".edit").click(function () { $(".modal, .shadow").removeClass('hide'); var tds = $(this).parent().prevAll(); tds.each(function () { //获取target属性 var n = $(this).attr('target'); //获取td中的内容 var text = $(this).text(); var a1 = '.modal input[name="'; var a2 = '"]'; var tmp = a1 + n + a2; $(tmp).val(text) }); }); $('.del').click(function () { $(this).parent().parent().remove() }); $('#i2').click(function () { var tr = document.createElement('tr'); $(".modal input[type='text']").each(function () { var td = document.createElement('td'); //获取当前标签的"name"属性 var name = $(this).attr("name"); //设置生成的'target'属性, $(td)把DOM对象转换成jQuery对象 $(td).attr('target', name); //把输入的内容赋值给生成的td内容中去 td.innerHTML = $(this).val(); $(tr).append(td); }); var td1 = document.createElement('td'); $(td1).append('<a class="edit">编辑</a> | <a class="del">删除</a>'); $(tr).append(td1); //最后要把tr添加到table标签中 $('#tb').append(tr); }) </script> </body> </html>
CSS操作
(和class相比粒度比较细) $("t1").css("样式名称", "样式值") 抽屉点赞: - $("t1").append() - setInterval() - opacity(透明度) - position - 字体
示例:动态点赞功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .container{ padding: 50px; border: 1px solid #dddddd; } .item{ position: relative; 30px; } </style> </head> <body> <div class="container"> <div class="item"> <span>赞</span> </div> </div> <div class="container"> <div class="item"> <span>赞</span> </div> </div> <div class="container"> <div class="item"> <span>赞</span> </div> </div> <script src="jquery-1.12.4.js"></script> <script> $(".item").click(function () { AddFavor(this); }); function AddFavor(self) { var tag = document.createElement('span'); var fontSize = 12; var bottom = 0; var left = 0; var opacity = 1; //DOM对象 $(tag).text("+1"); $(tag).css("color", "green"); // $(tag).css("backgroundColor", "red"); $(tag).css("bottom", bottom); $(tag).css("fontSize", fontSize); $(tag).css("left", left); $(tag).css("position", "absolute"); $(tag).css("opacity", opacity); $(self).append(tag); var obj = setInterval(function () { fontSize = fontSize + 10; bottom = bottom + 2; left = left + 2; opacity = opacity - 0.2; $(tag).css("bottom", bottom + "px"); $(tag).css("fontSize", fontSize + "px"); $(tag).css("left", left + "px"); $(tag).css("opaci ty", opacity); // console.log(opacity); // 当透明度小于1时清除定时器 if(opacity < 0){ clearInterval(obj); //并把tag标签框去掉 $(tag).remove() } }, 100); } </script> </body> </html>
位置
scrollTop() # 获取匹配元素相对滚动条顶部的偏移 scrollTop([val]) # 设置 scrollleft([val]) # 同上 scrollTop(0) # 返回顶部 offset # 指定标签在HTML中的坐标 $('.content').offset() $('.content').offset().top $('.content').offset().left position # 指定标签相对父标签(relative)的标签的坐标 $("#i1").height() # 获取标签的高度 + ? $("#i1").innerHeight() # 只获取边框+纯高度 + ? $("#i1").outHeight() # 获取边框 + 纯高度 + ? $("#i1").outHeight(true)# 获取边框 + 纯高度 + ? # 纯高度,边框,外边距,内边距
jQuery事件绑定的方式
DOM:三种绑定方式 jQuery: 1,第一种(常用): $(".c1").click() $(".c1")... 2,第二种(常用): $(".c1").bind("click", function(){}) #绑定 $(".c1").onbind("click", function(){}) #去掉绑定,和上面配合使用 3,第三种:(重要) 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。称为“委托” $('.c1').delegate('a', 'click', function(){}) # .c1下的a标签绑定事件 $('.c1').undelegate('a', 'click', function(){}) # 解除绑定事件 4,第四种: $(".c1").on("click",function(){}) $(".c1").off("click",function(){})
示例:如何让新添加的标签立即生效,执行相应的函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input id="t1" type="text"> <input id="a1" type="button" value="添加"> <ul id="ul"> <li>a</li> <li>b</li> <li>c</li> <li>d</li> <li>e</li> </ul> <script src="jquery-1.12.4.js"></script> <script> $('#a1').click(function () { var v = $('#t1').val(); var temp = "<li>" + v + "</li>" ; $("#ul").append(temp); }); // $("ul li").click(function () { // var v = $(this).text(); // alert(v) // }) $("ul").delegate("li","click",function () { var v = $(this).text(); alert(v) }) </script> </body> </html>
jQuery事件绑定阻止事件发生,a标签默认有一个click事件
示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a onclick="return Clickon();" id="i1" href="http://www.qq.com">QQ</a> </body> <script> // 第一种:DOM方式 function Clickon() { alert(123); return true } </script> <!--第二种方式jQuery--> <!--<script src="jquery-1.12.4.js"></script>--> <!--<script>--> <!--$("#i1").click(function () {--> <!--alert(456)--> <!--return false--> <!--})--> <!--</script>--> </html>
总结:
a标签默认有一个click事件,如果再添加一个。默认优先执行添加的然后会继续执行href中的事件。
如何让其不再执行默认的事件,有两种方式?
1, DOM 需要定义事件前加入'return',然后在事件的函数中加入'return false',如果是true则会继续执行。
2, jQuery方式,直接在定义函数时加入'return false'就不会继续执行默认的事件了。
示例:表单验证(重要)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form id="i1" action="10,模态对话框(编辑,删除).html" method="post"> <div><input type="text" name="用户名:"/></div> <div><input type="password" name="密 码:"/></div> <div><input type="text" name="邮 箱:"/></div> <div><input type="text" name="手机号:"/></div> <div><input type="text" name="验证码:"/></div> <input type="submit" value="提交"/> </form> <script src="jquery-1.12.4.js"></script> <script> $(":submit").click(function () { //在提交之前清空所有的错误提示 $(".error").remove(); var flag = true; $("#i1").find('input[type="text"],input[type="password"]').each(function () { var v = $(this).val(); if(v.length<=0){ flag = false; var tag = document.createElement('span'); tag.innerHTML = "必填"; tag.className = "error"; $(tag).css("color","red"); $(this).after(tag); //return只是退出当前的循环 //return false; } }); //如果上述循环内有任意一处为空,那么flag=False,即表单无法提交 return flag }) </script> </body> </html>
补充
一般js写在最后,如果js的前面刚好有图片需要加载,默认当页面所有的元素加载完毕后,才会执行js,但是$(function(){xxxxxx})当页面框架加载完毕后,自动执行'xxxxxx'的内容。所以上述示例最后的代码要放在这段代码里面。
jQuery扩展的两种方式
- $.extend 调用:$.方法 - $.fn.extend 调用:$(..).方法 两者的区别:定义的方式不同,调用的方式也不同
示例:jQuery的扩展
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script src="jquery-1.12.4.js"></script> <script> // 第一种方式: // $.extend({"alex": function () { // return 'ok' // }}); // var v = $.alex(); // alert(v) // // 第二种方式: $.fn.extend({'eric':function () { return 'no' }}); var v = $("#i1").eric() alert(v) </script> </body> </html>
总结:
1,注意以后自己定义jQuery扩展的时候或者要引入第三方jQuery扩展的时候,单独写个.js文件,然后引入
<script src='要引入.js'></script>,如果遇到重名的第三方模块,需要借助自执行函数
(function(){
var status = 1;
// 封装变量(优先执行自己的变量,从而避免变量冲突的问题)
})(jQuery)