JQuery:选择器、动画、AJAX请求

 

选择器javascript

一、事件编程与动画效果css

    一个选择器能够在概念上理解为指针。借助与JQuery库中的选择器$,线程能够获取到界面元素的引用,从而能够调用 ready()、click()方法把用户事件和动做方法关联起来,同时还能够调用show()、hide()、toggle()、slideUp()、slideDown()等实现jQuery内置的动画效果。html

    更进一步,若是使用JQuery Easing,那么对应函数的参数不是字符串而是字典,能够得到丰富的效果。使用JQuery Easing的代码以下:java

$(element).slideUp({ 
    duration: 1000,  
    easing: method,  
    complete: callback 
});     

参数duration:定义动画运动时间,毫秒,其实就是速度,时间越短,运动速度越快。
参数easing:指定动画效果,Easing js提供多种动画效果,有匀速运动、变加速运动、缓冲波动效果。
参数complete:动画结束后回调函数callback,能够自定义动画结束后的调用函数。jquery

ps1: $("#e")[0] 等价于 document.getElementById("e"),$(function(){})等价于$(document).ready(function(){})ajax

ps2: 说一下jquery $(document).ready() 与window.onload的区别编程

window.onload必须等到页面内包括图片的全部元素加载完毕后才能执行。 
$(document).ready()是DOM结构绘制完毕后就执行,没必要等到加载完毕。json

window.onload不能同时编写多个,若是有多个window.onload方法,只会执行一个 数组

$(document).ready()能够同时编写多个,而且均可以获得执行浏览器

 

 二、多种选择方法

    选择器使用方法以下:

$("#myELement")    选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement因此获得的是惟一的元素 
$("div")           选择全部的div标签元素,返回div元素数组 
$(".myClass")      选择使用myClass类的css的全部元素 
$("*")             选择文档中的全部的元素,能够运用多种的选择方式进行联合选择:例如$("#myELement,div,.myclass") 
层叠选择器: 
$("form input")         选择全部的form元素中的input元素 
$("#main > *")          选择id值为main的全部的子元素 
$("label + input")     选择全部的label元素的下一个input元素节点,经测试选择器返回的是label标签后面直接跟一个input标签的全部input标签元素 
$("#prev ~ div")       同胞选择器,该选择器返回的为id为prev的标签元素的全部的属于同一个父元素的div标签 
基本过滤选择器: 
$("tr:first")               选择全部tr元素的第一个 
$("tr:last")                选择全部tr元素的最后一个 
$("input:not(:checked) + span")   
过滤掉:checked的选择器的全部的input元素 
$("tr:even")               选择全部的tr元素的第0,2,4... ...个元素(注意:由于所选择的多个元素时为数组,因此序号是从0开始) 
$("tr:odd")                选择全部的tr元素的第1,3,5... ...个元素 
$("td:eq(2)")             选择全部的td元素中序号为2的那个td元素 
$("td:gt(4)")             选择td元素中序号大于4的全部td元素 
$("td:ll(4)")              选择td元素中序号小于4的全部的td元素 
$(":header") 
$("div:animated") 
内容过滤选择器: 
$("div:contains('John')") 选择全部div中含有John文本的元素 
$("td:empty")           选择全部的为空(也不包括文本节点)的td元素的数组 
$("div:has(p)")        选择全部含有p标签的div元素 
$("td:parent")          选择全部的以td为父节点的元素数组 
可视化过滤选择器: 
$("div:hidden")        选择全部的被hidden的div元素 
$("div:visible")        选择全部的可视化的div元素 
属性过滤选择器: 
$("div[id]")              选择全部含有id属性的div元素 
$("input[name='newsletter']")    选择全部的name属性等于'newsletter'的input元素 
$("input[name!='newsletter']") 选择全部的name属性不等于'newsletter'的input元素 
$("input[name^='news']")         选择全部的name属性以'news'开头的input元素 
$("input[name$='news']")         选择全部的name属性以'news'结尾的input元素 
$("input[name*='man']")          选择全部的name属性包含'news'的input元素 
$("input[id][name$='man']")    可使用多个属性进行联合选择,该选择器是获得全部的含有id属性而且那么属性以man结尾的元素 
子元素过滤选择器: 
$("ul li:nth-child(2)"),$("ul li:nth-child(odd)"),$("ul li:nth-child(3n + 1)") 
$("div span:first-child")          返回全部的div元素的第一个子节点的数组 
$("div span:last-child")           返回全部的div元素的最后一个节点的数组 
$("div button:only-child")       返回全部的div中只有惟一一个子节点的全部子节点的数组 
表单元素选择器: 
$(":input")                  选择全部的表单输入元素,包括input, textarea, select 和 button 
$(":text")                     选择全部的text input元素 
$(":password")           选择全部的password input元素 
$(":radio")                   选择全部的radio input元素 
$(":checkbox")            选择全部的checkbox input元素 
$(":submit")               选择全部的submit input元素 
$(":image")                 选择全部的image input元素 
$(":reset")                   选择全部的reset input元素 
$(":button")                选择全部的button input元素 
$(":file")                     选择全部的file input元素 
$(":hidden")               选择全部类型为hidden的input元素或表单的隐藏域 
表单元素过滤选择器: 
$(":enabled")             选择全部的可操做的表单元素 
$(":disabled")            选择全部的不可操做的表单元素 
$(":checked")            选择全部的被checked的表单元素 
$("select option:selected") 选择全部的select 的子元素中被selected的元素 
选取一个 name 为”S_03_22″的input text框的上一个td的text值
$(”input[@ name =S_03_22]“).parent().prev().text() 
名字以”S_”开始,而且不是以”_R”结尾的
$(”input[@ name ^='S_']“).not(”[@ name $='_R']“) 
一个名为 radio_01的radio所选的值
$(”input[@ name =radio_01][@checked]“).val(); 
 
$("A B") 查找A元素下面的全部子节点,包括非直接子节点
$("A>B") 查找A元素下面的直接子节点
$("A+B") 查找A元素后面的兄弟节点,包括非直接子节点
$("A~B") 查找A元素后面的兄弟节点,不包括非直接子节点 
$("A B") 查找A元素下面的全部子节点,包括非直接子节点 
 

 

如下为实例: 

例子:找到表单中全部的 input 元素 
 
HTML 代码: 
 
<form>
<label>Name:</label>
<input name="name" />
<fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />
</fieldset>
</form>
<input name="none" /> 
jQuery 代码: 
 
$("form input") 
结果: 
 
[ <input name="name" />, <input name="newsletter" /> ] 
 
2. $("A>B") 查找A元素下面的直接子节点 
例子:匹配表单中全部的子级input元素。 
 
HTML 代码: 
 
<form>
<label>Name:</label>
<input name="name" />
<fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />
</fieldset>
</form>
<input name="none" /> 
jQuery 代码: 
 
$("form > input") 
结果: 
 
[ <input name="name" /> ] 
 
3. $("A+B") 查找A元素后面的兄弟节点,包括非直接子节点 
例子:匹配全部跟在 label 后面的 input 元素 
 
HTML 代码: 
 
<form>
<label>Name:</label>
<input name="name" />
<fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />
</fieldset>
</form>
<input name="none" /> 
jQuery 代码: 
 
$("label + input") 
结果: 
 
[ <input name="name" />, <input name="newsletter" /> ] 
 
 
4. $("A~B") 查找A元素后面的兄弟节点,不包括非直接子节点 

 

HTML 代码: 

<form>
<label>Name:</label>
<input name="name" />
<fieldset>
<label>Newsletter:</label>
<input name="newsletter" />
</fieldset>
</form>
<input name="none" /> 
jQuery 代码: 

$("form ~ input") 
结果: 

[ <input name="none" /> ]

 

网络请求

应用的最多的是 ajax 异步,这里记录一下各类参数。

 

1.url
要求为String类型的参数,(默认为当前页地址)发送请求的地址。

2.type
要求为String类型的参数,请求方式(post或get)默认为get。注意其余http请求方法,例如put和delete也可使用,但仅部分浏览器支持。

3.timeout
要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。

4.async
要求为Boolean类型的参数,默认设置为true,全部请求均为异步请求。若是须要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其余操做必须等待请求完成才能够执行。

5.cache
要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false),设置为false将不会从浏览器缓存中加载请求信息。

6.data
要求为Object或String类型的参数,发送到服务器的数据。若是已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,能够查看  processData选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。若是是数组,JQuery将自动为不一样值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。

7.dataType
要求为String类型的参数,预期服务器返回的数据类型。若是不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并做为回调函数参数传递。可用的类型以下:
xml:返回XML文档,可用JQuery处理。
html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。
script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),全部post请求都将转为get请求。
json:返回JSON数据。
jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。
text:返回纯文本字符串。

8.beforeSend
要求为Function类型的参数,发送请求前能够修改XMLHttpRequest对象的函数,例如添加自定义HTTP头。在beforeSend中若是返回false能够取消本次ajax请求。XMLHttpRequest对象是唯一的参数。
            function(XMLHttpRequest){
               this;   //调用本次ajax请求时传递的options参数
            }
9.complete
要求为Function类型的参数,请求完成后调用的回调函数(请求成功或失败时均调用)。参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。
          function(XMLHttpRequest, textStatus){
             this;    //调用本次ajax请求时传递的options参数
          }

10.success:要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。
         (1)由服务器返回,并根据dataType参数进行处理后的数据。
         (2)描述状态的字符串。
         function(data, textStatus){
            //data多是xmlDoc、jsonObj、html、text等等
            this;  //调用本次ajax请求时传递的options参数
         }

11.error:
要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。ajax事件函数以下:
       function(XMLHttpRequest, textStatus, errorThrown){
          //一般状况下textStatus和errorThrown只有其中一个包含信息
          this;   //调用本次ajax请求时传递的options参数
       }

12.contentType
要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为"application/x-www-form-urlencoded"。该默认值适合大多数应用场合。

13.dataFilter
要求为Function类型的参数,给Ajax返回的原始数据进行预处理的函数。提供data和type两个参数。data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。
            function(data, type){
                //返回处理后的数据
                return data;
            }

14.dataFilter
要求为Function类型的参数,给Ajax返回的原始数据进行预处理的函数。提供data和type两个参数。data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。
            function(data, type){
                //返回处理后的数据
                return data;
            }

15.global
要求为Boolean类型的参数,默认为true。表示是否触发全局ajax事件。设置为false将不会触发全局ajax事件,ajaxStart或ajaxStop可用于控制各类ajax事件。

16.ifModified
要求为Boolean类型的参数,默认为false。仅在服务器数据改变时获取新数据。服务器数据改变判断的依据是Last-Modified头信息。默认值是false,即忽略头信息。

17.jsonp
要求为String类型的参数,在一个jsonp请求中重写回调函数的名字。该值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,例如{jsonp:'onJsonPLoad'}会致使将"onJsonPLoad=?"传给服务器。

18.username
要求为String类型的参数,用于响应HTTP访问认证请求的用户名。

19.password
要求为String类型的参数,用于响应HTTP访问认证请求的密码。

20.processData
要求为Boolean类型的参数,默认为true。默认状况下,发送的数据将被转换为对象(从技术角度来说并不是字符串)以配合默认内容类型"application/x-www-form-urlencoded"。若是要发送DOM树信息或者其余不但愿转换的信息,请设置为false。

21.scriptCharset
要求为String类型的参数,只有当请求时dataType为"jsonp"或者"script",而且type是GET时才会用于强制修改字符集(charset)。一般在本地和远程的内容编码不一样时使用。

 

如下为实例:

$(function(){
    $('#send').click(function(){
         $.ajax({
             type: "GET",
             url: "test.json",
             data: {username:$("#username").val(), content:$("#content").val()},
             dataType: "json",
             success: function(data){
                         $('#resText').empty();   //清空resText里面的全部内容
                         var html = ''; 
                         $.each(data, function(commentIndex, comment){
                               html += '<div class="comment"><h6>' + comment['username']
                                         + ':</h6><p class="para"' + comment['content']
                                         + '</p></div>';
                         });
                         $('#resText').html(html);
                      }
         });
    });
});

 

$.ajax()函数启动了一个网络传输任务task,这个任务被表示为一个字典 —— 也就是函数的参数。

网络传输结束后,再使用选择器更新界面元素和动画效果。

快捷方法:

除了全局函数 ajax(),还能够用选择器对象中的load()函数,直接完成一个界面元素的异步更新过程。例如

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("div").ajaxStart(function(){
    $(this).html("<img src='/i/demo_wait.gif' />");
  });
  $("button").click(function(){
    $("div").load("/example/jquery/demo_ajax_load.asp");
  });
});
</script>
</head>

<body>
  <div id="txt"><h2>经过 AJAX 改变文本</h2></div>
  <button>改变内容</button>
</body>
</html>

 在选择器中,load()函数会启动异步请求,而且会在一开始调用相同选择器的ajaxStart()函数,注册一个函数异步调用。

相关文章
相关标签/搜索