本周的日常……晚上再发,这不是日常……
我们都造,在JavaScript中通过下面的方式,可以做到链式操作。
function example(){
//code block
return this
}
那么……在奇技淫巧的jQuery中就更多了……以下就当是学习笔记吧 菊苣们请不要吐槽QAQ
jQuery中神奇的$操作符,能干的事好多呀……不仅可以进行元素的筛选,还可以返回一个元素(如下图)……那么机会来了。
假如需要创建一个元素并临时的赋予其一些属性,那么链式操作就很好玩啦……这里有一个小例子。
$("div#example").append(
$("<div>").attr({"id":"examplechild","title":"some text"})
.css({"display":"none"})
.text('233');
);
//相当于
$("div#example").append("<div></div>");
$("div#example div:last").attr({"id":"examplechild","title":"some text"});
$("div#examplechild").css({"display":"none"});
$("div#examplechild").text('233');
QAQ我本来是对齐的……
这不优雅?可能吧……
jQuery还有个很厉害的东西叫.done() 可以在一个Deferred对象执行完成后链式调用。
给个jQuery官方例子
$.get("test.php").done(function() {
alert("$.get succeeded");
});
配合.when()就更酷炫了,基本ajax队列问题就解决了……
$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2){
/* a1 and a2 are arguments resolved for the
page1 and page2 ajax requests, respectively */
var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */
if ( /Whip It/.test(jqXHR.responseText) ) {
alert("First page has 'Whip It' somewhere.");
}
});
以上代码的作用是当两个ajax请求都成功时执行.done()中的callback function
如果想无论如何都执行callback function的话,把.done()换成.always()就行啦。
这里有关于延迟对象的说明:http://jquery.bootcss.com/category/deferred-object/

