前端技术(1) :JQuery学习笔记

使用JQuery之前,首先从官网下载库文件

http://jquery.com/

jquery-2.1.4.js和jquery-2.1.4.min.js,前者是完整无压缩版本,用于开发调试;后者是压缩版本,用于正式产品环境。在页面中引入jquery只需要将库文件放置到一个公共文件位置,然后在使用页面中直接引入即可。

1 <script src="../scripts/jquery-2.1.4.js" type="text/javascript"></script>
2 <script type="text/javascript">
3     //等待dom元素加载完毕,其他关联元素还未加载完全就可以执行
4     $(document).ready(function(){
5         alert("Hello World!");
6     });
7 </script>

#1 在JQuery库中符号’$’跟字符串’jquery’是完全等价的字段;

#2 $(document).ready(function() {…..});是等待页面中所有DOM结构渲染完毕就会执行,不必等所有DOM关联的元素加载完全,可以简写成$(function() {…..});而window.onload = function() {….};则需要等所有内容加载完毕才执行;

使用$(‘#id’)获取的值永远都是对象,即使网页上没有这个元素;因此需要使用下述代码判断某个元素在网页上是否存在。

1 if ($(‘#id’}.length > 0) {
2     // do something when the object is existing.
3 } 

JQuery与CSS使用的选择器

基本选择器:

#1 $(‘#test’):                    选取id为test的元素

#2 $(‘.test’):                     选取所有class为test的元素

#3 $(‘p’):                           选取所有<p>元素

#4 $(‘div, p.test’):           选取所有<div>元素,选取所有<p>元素中class为test的元素

层次选择器:

#1 $(‘div span’):                            选取<div>内部所有的<span>元素

#2 $(‘div > span’):           选取<div>下一级所有的<span>元素

#3 $(‘.one + div’):           选取class为one的元素后面第一个<div>元素,等价于$(‘.one’).next(‘div’);

#4 $(‘#two ~ div’):          选取id是two的元素后面所有<div>元素,等价于$(‘#two’).nextAll(‘div’);

#5 $(‘#prev’).siblings(‘div’);        选取id是prev的元素前后左右同辈<div>元素;

过滤选择器:

#1 $(‘div : first’):             选取第一个<div>元素

#2 $(‘div  : last’):             选取最后一个<div>元素

#3 $(‘div : eq(3)’):           选取第三个<div>元素

表单选择器

JQuery常用操作:

1 $("input:eq(0)").click(function(){
2     $("p").attr("title","选择你最喜欢的水果.");
3     $("#multiple").val(["选择2号", "选择3号"]);
4     $(":checkbox").val(["check2","check3"]);
5 });

#1 获取jquery元素,$(“input”)表示仅选择<input>元素,$(“:input”)表示选择所有输入元素<input>, <select>, <button>和<textarea>

#2 添加click动作处理

#3 通过attr()方法设置元素属性

#4 attr()第一个参数除了title,还可以是class

#5 获取id为multiple的元素,并设置选项;获取元素类型为checkbox的元素,并设置选项;

 1 $(function(){
 2     $("#panel h5.head").bind("click",function(){
 3         var $content = $(this).next("div.content");
 4         if($content.is(":visible")){
 5             $content.hide();
 6         }else{
 7         $content.show();
 8         }
 9     });
10
11     $("#panel h5.head").mouseover(function(){
12         $(this).next("div.content").show();
13     });
14         $("#panel h5.head").mouseout(function(){
15         $(this).next("div.content").hide();
16     })
17 });
18             

#1 绑定事件除了click,还可以是blur, focus, load, resize, scroll, unload, dbclick, mousedown, mouseup等

#2 $content.is()表示属性判定方法,除了visible还可以是checked等;hide和show方法在不加参数的时候相当于css(“display”, “[none|block]”);也可以添加参数[fast|normal|slow|#],最后一个表示数字,也就是在#毫秒内完成显示或者隐藏;

#3 mouseover和mouseout事件可以被hover(enterFn, leaveFn)替代;类似的还有多次的click事件可以被toggle(fn1, fn2, ….., fnx)替代,多次点击则循环执行注册的方法;

 1 $(‘span‘).bind("click",function(event){
 2     var txt = $(‘#msg‘).html() + "<p>内层span元素被点击.<p/>";
 3     $(‘#msg‘).html(txt);
 4     event.stopPropagation();    //  阻止事件冒泡
 5 });
 6 $(‘#content‘).bind("click",function(event){
 7     var txt = $(‘#msg‘).html() + "<p>外层div元素被点击.<p/>";
 8     $(‘#msg‘).html(txt);
 9     return false;    //  阻止事件冒泡
10 });
11 $("body").bind("click",function(){
12     $("#btn").unbind("click", clickFun2);
13 });

#1 如果span为content的内部元素,则如果点击了span会造成时间冒泡反应,content的click事件也会触发;为了阻止事件冒泡,可以用event.stopPropagation()或者直接返回false;

#2 与event.stopPropagation()类似,event.preventDefault()也可以阻止事件冒泡,不过其还有更大的影响,就是阻止缺省的动作,这在提交需要进行表单验证的表单事件中非常有用;

#3 另外event还携带了很多有用的信息,type表示触发的事件类型,target表示触发事件的元素,pageX和pageY表示触发事件点光标在页面的位置,which表示输入设备的类型;

#4 方法unbind可以去除指定元素上某种事件类型的某个相应方法;

 1 $("#CheckedAll").click(function(){
 2     $(‘[name=items]:checkbox‘).attr(‘checked‘, true);
 3 });
 4 $("#send").click(function(){
 5 var str="你选中的是:\r\n";
 6     $(‘[name=items]:checkbox:checked‘).each(function(){
 7     str+=$(this).val()+"\r\n";
 8     })
 9     alert(str);
10 });

#1 $(‘[name=items]:checkbox’)表示选择所有name为items的checkbox类型元素,其中name可以修改成type,表示以类型匹配;$(‘[name=items]:checkbox:checked’)进一步表示所有被勾选的元素;

#2 元素选择器还可以为:$(‘input[type=checkbox][name=items]‘);

#3 arrt(‘checked’, true)

 1 $(‘form :input‘).blur(function(){
 2     ………..
 3 }).keyup(function(){
 4     $(this).triggerHandler("blur");
 5 }).focus(function(){
 6     $(this).triggerHandler("blur");
 7 });
 8 $(‘#send‘).click(function(){
 9     $("form :input.required").trigger(‘blur‘);
10     var numError = $(‘form .onError‘).length;
11     if(numError){
12         return false;
13     }
14     alert("it works with no errors.");
15 });

#1 keyup()和focus()方法表示对input元素的输入值进行实时判断,triggerHandler(‘blur’)表示仅触发blur事件,不会触发浏览器缺省的动作;trigger(‘blur’)不仅触发指定的事件还会触发缺省动作,同时光标会从当前触发元素移开,所以实时判断输入值需要使用triggerHandler;

#2 #send表示form提交按钮的设计,在提交的时候触发blur事件进行验证,如果有errors则返回false表示终止提交动作;

对比$(document).ready(function() {……});和window.onload = function() {};的区别:

#1 前者只要DOM元素下载完毕(不需要图片或者音频文件等下载完毕)就可以执行,后者需要网页中所有元素都下载完毕才执行;

#2 后者的onload属性仅加载最后一个被绑定的方法,因此页面里仅有一个onload方法可以执行;前者可以多次申明,并按照申明顺序加载执行;

#3前者等价于$(function() {…..});后者等价于$(window).load(function() {……});

JQuery使用Ajax

Ajax最大的优势在于不需要用传统的提交Form并刷新整个页面的方式来提交数据,而是通过XMLHttpRequest向服务器异步提交数据并获取返回值;但Ajax也有自身的不足,XMLHttpRequest对象不能很好地兼容各种浏览器,浏览器的状态改变不能被前进和回退按钮记录,搜索引擎对JS的支持不足等;

JQuery对Ajax的封装分三层,最底层为$.ajax(),最常用的一层为$.load(),$.get(),$.post(),还有一层为$.getScript(),$.getJSON();

 

$().load(url [, dataIn] [, callBackFn])

1 $("#resText").load("ajax.html", {name: "leo", age: "22"}, function(responseData, textStatus, XMLHttpRequest) {
2     alert( $(this).html() );    //在这里this指向的是当前的DOM对象,即 $("#iptText")[0]
3     alert(responseData);       //请求返回的内容
4     alert(textStatus);            //请求状态:success,error
5     alert(XMLHttpRequest);     //XMLHttpRequest对象
6 });

#1 url表示请求的目标地址,dataIn表示传入参数,callBackFn表示无论load成功与否都执行的回调方法;

 

$().get(url [, data] [, callback] [, type])

#1 callBack表示仅在get调用成功之后才执行,否则不执行;

#2 type表示不同的返回数据类型,比如html、json、text等;

#3 post与get函数头类似,不过有不少区别;

$().ajax(options)

#1 options包含所有以key/value存在的参数;

#2 参数类型有url, type, timeout, data, dataType, beforeSend,success, error, complete等;

JQuery还提供了一些列的全局函数,在Ajax请求的各种状态下自动触发

$().ajaxStart(function () { });        ajax请求开始之后触发

$().ajaxStop(function() { });         ajax请求结束之后触发

$().ajaxError(function() { });        ajax请求发生错误的时候触发

$().ajaxSuccess(function() { });   ajax请求成功的时候触发

引入插件jquery.validate.js,并通过元素的name属性关联字段和验证规则进行验证,这种方法实现了行为与结构的分离;

 1         $("#commentForm").validate({
 2             rules: {
 3                 username: {
 4                     required: true,
 5                     minlength: 2
 6                 },
 7                 email: {
 8                     required: true,
 9                     email: true
10                 },
11                 url:"url",
12                 comment: "required"
13             }
14           });

#1 #commentForm表示待验证的表单的id,username表示需要被验证的元素的name;

#2 validation验证的信息缺省为en,可以引入jquery.validation.message_xx.js修改显示语言;

时间: 2024-10-04 07:52:03

前端技术(1) :JQuery学习笔记的相关文章

jQuery学习笔记10:Ajax技术

jQuery 库拥有完整的 Ajax 兼容套件.其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据. jQuery 采用了三层封装:最底层的封装方法为:$.ajax(),而通过这层封装了第二层有三种方法:.load().$.get()和$.post(),最高层是$.getScript()和$.getJSON()方法. 函数 描述 jQuery.ajax() 执行异步 HTTP (Ajax) 请求. .ajaxComplete() 当 Ajax 请求完成时注册要调用的处理程序.这是一个

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

Js脚本之jQuery学习笔记(1)

Js脚本之jQuery学习笔记(1) 一.javascript基础 单行注释 多行注释 /* */ 数据类型 数值型 字符串型 布尔型 空值 未定义值 转义字符 函数定义:1234567891011121314<head><script language="javascript"function test(m){var xixi="嘻嘻"alert("这是javascript")document.write(xixi + m)}

jQuery学习笔记--JqGrid相关操作 方法列表(上)

1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选中行:$("#jqGrid

jQuery学习笔记之过滤器三(向上查找兄弟元素、向下查找兄弟元素)

向上查找兄弟元素的方法:prev方法.prevAll方法.prevUntil方法 向下查找兄弟元素:next方法.nextAll方法.nextUntil方法 向上查找兄弟元素 1.prev方法 2.prevAll方法 3.prevUntil方法 向下查找兄弟元素 1.next方法 2.nextAll方法 3.nextUntil方法 jQuery学习笔记之过滤器三(向上查找兄弟元素.向下查找兄弟元素)

JQuery学习笔记(1)

JQuery学习笔记(1) 认识JQuery 简介 JQuery是一个JavaScript库,语法简洁,有跨平台的兼容性,简化了开发人员遍历html文档.操作dom.处理事件.执行动画和开发Ajax的操作.理念是:写得少,做得多. 优点 1.轻量级.UglifyJS压缩后大小保持在30KB 2.选择器强大. 3.DOM操作封装. 4.可靠地事件处理机制. 5.完善的Ajax. 库类型 jquery.js(开发版) 约229kb,用于学习和开发. jquery.min.js(生产版) 约31kb,

jQuery学习笔记(2014年8月3日)事件委派

jQuery中的事件委托是通过 closest() 来完成的. closest() 方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上. 参考资料: jQuery 遍历 - closest() 方法http://www.w3school.com.cn/jquery/traversing_closest.asp jQuery学习笔记(2014年8月3日)事件委派

锋利的JQuery 学习笔记

第一章 认识JQuery ·页面加载事件(可以写多个ready())$(document).ready(function(){alert(“hello world”);}) ·链式操作:JQuery允许你在一句代码中操做任何与其相关联的元素,包括其子元素.父元素等//选择名称为myDiv的元素,为其自身添加css1的样式,然后再选择其所有子元素a,为其移除css2样式$(“#myDiv”).addClass(“css1″).children(“a”).removeClass(“css2″); ·

jQuery 学习笔记

jQuery 学习笔记 position()是相对父元素的,有top.left两个属性. offset()是相对于document的当前坐标. offsetParent()是获取离元素最近的有定位的父元素. .closet() 获取最近的匹配选择器的父元素. off()移除一个事件处理函数,要删除委托事件需提供对应的选择器. detch()和remove()一样,但是不会移除绑定数据,以便以后添加.empty()是清空该元素的所有子元素.

jQuery学习笔记——jQuery基础核心

代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起始的.而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页面元素选择或执行功能函数的时候可以这么写: $(function () {}); //执行一个匿名函数 $(‘#box’);//进行执行的ID元素选择 $(‘#box’).css(‘color’, ‘red’);//执行功能函数由于$本身就是jQuery对象的缩写形式,那么也就是说上面的三段代码也可以写成如下形式:jQ