web前端-js小記(15)-jQuery動(dòng)畫(huà)與ajax

題目1:jQuery 中盹兢, $(document).ready()是什么意思烹俗?

  1. $(document).ready()表示頁(yè)面的dom元素已經(jīng)加載完畢蛤袒,這是為了防止在頁(yè)面加載元素加載完之前對(duì)dom元素進(jìn)行操作。原生js中我們可以使用window.onload來(lái)達(dá)到這個(gè)效果乘粒,不過(guò)兩者還是有區(qū)別,onload是所有元素伤塌、圖片灯萍、外部資源都加載完,而$(document).ready()只需要元素加載完成寸谜。所以onload比$().ready()要慢

題目2:$node.html()和$node.text()的區(qū)別?

  1. $node.html()返回node中的html內(nèi)容竟稳,$node.text()返回node中的文本內(nèi)容。
  2. 當(dāng)包含參數(shù)的時(shí)候熊痴,html(str)為替換html內(nèi)容為參數(shù)值他爸,text(str)為替換文本內(nèi)容為參數(shù)值。

題目3:$.each果善,$.extend 的作用和用法?

  1. $.each:
    $.each()函數(shù)和$(selector).each()是不一樣的诊笤,$(selector).each()是專(zhuān)門(mén)遍歷一個(gè)jQuery對(duì)象的,$.each()函數(shù)可用于迭代任何集合巾陕,無(wú)論是“名/值”對(duì)象(JavaScript對(duì)象)或數(shù)組讨跟。在迭代數(shù)組的情況下,回調(diào)函數(shù)每次傳遞一個(gè)數(shù)組索引和相應(yīng)的數(shù)組值作為參數(shù)鄙煤。該方法返回其第一個(gè)參數(shù)晾匠,就是迭代的對(duì)象。
//$.each()
var str=$.each([52, 97],function(index,value){
  console.log(index+":"+value);
});
var  obj=$.each({"a":10,"b":"jon"},function(index,value){
  console.log(index+":"+value);
});
//$(selector).each()
<ul class="list">
  <li>1</li><li>2</li>
</ul>
$("ul.list li").each(function(){
  var num=$(this).text()*2;
  $(this).text(num);
});
  1. $.extend:
    當(dāng)我們提供兩個(gè)或多個(gè)對(duì)象給$.extend()梯刚,對(duì)象的所有屬性都添加到目標(biāo)對(duì)象(第一個(gè)參數(shù))凉馆。
    只有一個(gè)參數(shù)提供給$.extend(),意味著目標(biāo)參數(shù)被省略亡资。jQuery對(duì)象被默認(rèn)為目標(biāo)對(duì)象澜共。這時(shí)可以在jQuery的命名空間下添加新的功能。對(duì)于插件開(kāi)發(fā)者希望向 jQuery 中添加新函數(shù)時(shí)是很有用的锥腻。
    在默認(rèn)情況下嗦董,通過(guò)$.extend()合并,如果第一個(gè)對(duì)象的屬性本身是一個(gè)對(duì)象或數(shù)組瘦黑,那么它將完全用第二個(gè)對(duì)象相同的key重寫(xiě)一個(gè)屬性京革。然而,如果將 true 作為該函數(shù)的第一個(gè)參數(shù)幸斥,那么會(huì)在對(duì)象上進(jìn)行遞歸的合并存崖。
//默認(rèn)情況下合并是重寫(xiě)一個(gè)屬性
var object1 = {
  apple: 0,  banana: { weight: 52, price: 100 },  cherry: 97
};
var object2 = {
  banana: { price: 200 },  durian: 100
};
$.extend( object1, object2 );    //object1={apple: 0,  banana: { price: 200 }, cherry: 97,durian: 100},banaba被替換了睡毒,而不是合并
//第一個(gè)參數(shù)為true時(shí)
var object1 = {
  apple: 0,  banana: { weight: 52, price: 100 },  cherry: 97
};
var object2 = {
  banana: { price: 200 },  durian: 100
};
$.extend( true, object1, object2 );    //object1={apple: 0,  banana: { weight:52,price: 200 },  cherry: 97,durian: 100},banaba被合并
//不改變第一個(gè)參數(shù)冗栗,生成新對(duì)象
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var settings = $.extend( {}, defaults, options );   //settings={validate: true, limit: 5, name: "bar"}

題目4:jQuery 的鏈?zhǔn)秸{(diào)用是什么演顾?

jQuery鏈?zhǔn)秸{(diào)用:在對(duì)象上一次性調(diào)動(dòng)多個(gè)方法
$(this).addClass("active").siblings().removeClass("active");
$('#ct').css('color','blue').show(400).hide();
因?yàn)榇蟛糠謱?duì)象方法的最后是return this供搀,所以有了鏈?zhǔn)秸{(diào)用,簡(jiǎn)易代碼钠至。

題目5:jQuery 中 data 函數(shù)的作用

.data() 方法允許我們?cè)贒OM元素上綁定任意類(lèi)型的數(shù)據(jù),避免了循環(huán)引用的內(nèi)存泄漏風(fēng)險(xiǎn)葛虐。

//我們可以在一個(gè)元素上設(shè)置不同的值,之后獲取這些值:
$("body").data("foo", 52); 
$("body").data("bar", { myType: "test", count: 40 });
$("body").data({ baz: [ 1, 2, 3 ] });
$("body").data();   //{ foo: 52, bar: { myType: "test", count: 40 }, baz: [ 1, 2, 3 ] }
//獲取值棉钧,若無(wú)則返回undefined
alert( $("body").data("hint")); //undefined
alert( $("body").data("foo")); //52
//刪除值
$("body").removeData("foo");
console.log($("body").data("foo"));    //undefined

  <div>
  The values stored were<span></span>and<span></span>
</div>
<script>var div = $("div")[0];
   $("div").data("test", { first: 16, last: "pizza!" });
   $("span:first").text($("div").data("test").first);    //第一個(gè)span里面加16
   $("span:last").text($("div").data("test").last);    //第二個(gè)span里面加pizza!
</script>
//從jQuery 1.4.3起屿脐,HTML 5 data- 屬性將自動(dòng)被引用到j(luò)Query的數(shù)據(jù)對(duì)象中。
<div data-role="page" data-last-value="43" data-hidden="true"></div>
$("div").data("role")==="page"
$("div").data("lastValue")===43
$("div").data("hidden")===true

題目6:寫(xiě)出以下功能對(duì)應(yīng)的 jQuery 方法:

  1. 增刪class
    給元素 $node 添加 class active,給元素 $noed 刪除 class active
$("node").addClass("active");  $("node").removeClass("active");
  1. 顯示/隱藏
    展示元素$node, 隱藏元素$node
$(node).show();  $("node").hide();    //2個(gè)參數(shù)宪卿,1.動(dòng)畫(huà)運(yùn)行時(shí)間;2.完成時(shí)執(zhí)行的函數(shù)的诵;
  1. 獲取/修改屬性
    獲取元素$node 的 屬性: id、src佑钾、title西疤, 修改以上屬性
$("node").attr("id"); $("node").attr("src"); $("node").attr("title"); 
$("node").attr("id","value"); $("node").attr("src","value"); $("node").attr("title","value");
  1. 添加自定義屬性
    給$node 添加自定義屬性data-src
$("node").data("src","value");
  1. 開(kāi)頭添加元素
    在$ct 內(nèi)部最開(kāi)頭添加元素$node
$("ct").prepend($("node"));
  1. 末尾添加元素
    在$ct 內(nèi)部最末尾添加元素$node
$("ct").append($("node"));
  1. 刪除元素
    刪除$node
$("node").remove(); 
$("node1").remove($("node")); //刪除node1里的node
  1. 清空元素里的內(nèi)容
    把$ct里內(nèi)容清空
$("ct").empty();
  1. 設(shè)置html
    在$ct 里設(shè)置 html <div class="btn"></div>
$("ct").html("<div class='btn'></div>");
  1. 獲取寬高
    獲取、設(shè)置$node 的寬度休溶、高度(分別不包括內(nèi)邊距代赁、包括內(nèi)邊距、包括邊框兽掰、包括外邊距)
$node.width();//不包括內(nèi)邊距寬度,僅包括內(nèi)容
$node.height();//不包括內(nèi)邊距高度,僅包括內(nèi)容
$node.innerWidth();//包括內(nèi)容和內(nèi)邊距寬度
$node.innerHeight();//包括內(nèi)容和內(nèi)邊距高度
$node.outerWidth();//包括內(nèi)容,內(nèi)邊距,邊框?qū)挾?$node.outerHeight();//包括內(nèi)容,內(nèi)邊距,邊框高度
$node.outerHeight(true);//包括內(nèi)容,內(nèi)邊距,邊框,外邊距高度
$node.outerWidth(true);//包括內(nèi)容,內(nèi)邊距,邊框,外邊距寬度
  1. 獲取滾動(dòng)距離
    獲取窗口滾動(dòng)條垂直滾動(dòng)距離
$(window).scrollTop();
  1. 獲取水平垂直偏移距離
    獲取$node 到根節(jié)點(diǎn)水平芭碍、垂直偏移距離
$node.offset();    //返回的對(duì)象包含top 和 left, 此方法只對(duì)可見(jiàn)元素有效
  1. 修改元素樣式
    修改$node 的樣式,字體顏色設(shè)置紅色孽尽,字體大小設(shè)置14px
 $node.css({
    color: 'red',
    'font-size': '14px'                //中間有短線(xiàn)的必須用引號(hào)窖壕,因?yàn)閖s只支持下劃線(xiàn)
  });
  1. 遍歷節(jié)點(diǎn)
    遍歷節(jié)點(diǎn),把每個(gè)節(jié)點(diǎn)里面的文本內(nèi)容重復(fù)一遍
$('#items li').each(function(){
    var text = $(this).text()
    $(this).text(text + text)
});
  1. 查找元素
    從$ct 里查找 class 為 .item的子元素
$ct.find('.item');
  1. 獲取元素
    獲取$ct 里面的所有孩子
$ct.children();
  1. 獲取元素
    對(duì)于$node泻云,向上找到 class 為'.ct'的父親艇拍,在從該父親找到'.panel'的孩子
$node.parents(".ct").find(".panel");
  1. 獲取元素?cái)?shù)量
    獲取選擇元素的數(shù)量
$node.length
$node.size() //自1.8版本廢棄,請(qǐng)使用.length代替
  1. 獲取元素排行
    獲取當(dāng)前元素在兄弟中的排行
$node.index();

題目7:用jQuery實(shí)現(xiàn)以下操作

  1. 當(dāng)點(diǎn)擊$btn 時(shí)宠纯,讓 $btn 的背景色變?yōu)榧t色再變?yōu)樗{(lán)色
$(".wrap").on("click",".btn",function(e){
  e.preventDefault();
  var $this=$(this);
  $(this).css("background-color","red");
  setTimeout(function(){
    $this.css("background-color","blue");
    console.log($this);
  },800);
});
  1. 當(dāng)窗口滾動(dòng)時(shí)卸夕,獲取垂直滾動(dòng)距離
$(window).on("scroll",function(){
  $(".getHeight").find("span").text($(window).scrollTop());
});
  1. 當(dāng)鼠標(biāo)放置到$div 上,把$div 背景色改為紅色婆瓜,移出鼠標(biāo)背景色變?yōu)榘咨?/strong>
$(".wrap").on("mouseenter",".line .b",function(){
  $(this).css("background-color","red");
});
$(".wrap").on("mouseleave",".line .b",function(){
  $(this).css("background-color","#fff");
});
  1. 當(dāng)鼠標(biāo)激活 input 輸入框時(shí)讓輸入框邊框變?yōu)樗{(lán)色
$(".wrap").on("focus",".line input[type=text]",function(){
  $(this).css("border-color","blue");
});
  1. 當(dāng)輸入框內(nèi)容改變時(shí)把輸入框里的文字小寫(xiě)變?yōu)榇髮?xiě)
$(".wrap").on("focusout",".line input[type=text]",function(){
  console.log($(this).val());
});
  1. 當(dāng)輸入框失去焦點(diǎn)時(shí)去掉邊框藍(lán)色快集,控制臺(tái)展示輸入框里的文字
$(".wrap").on("input",".line input[type=text]",function(){
  $(this).val($(this).val().toUpperCase());
});
  1. 當(dāng)選擇 select 后,獲取用戶(hù)選擇的內(nèi)容
$(".wrap").on("change","select",function(){
  $(this).parent().find(".right").text($(this).find("option:selected").text());
});

代碼

題目8:用 jQuery ajax 實(shí)現(xiàn)如下效果廉白。`當(dāng)點(diǎn)擊加載更多會(huì)加載數(shù)據(jù)展示到頁(yè)面效果預(yù)覽304

代碼

題目9(選做):** 實(shí)現(xiàn)一個(gè)天氣預(yù)報(bào)頁(yè)面个初,UI 如下圖所示(可自由發(fā)揮)。數(shù)據(jù)接口:

獲取當(dāng)前用戶(hù)所在城市接口://jirenguapi.applinzi.com/city.php
服務(wù)端支持 CORS 跨域調(diào)用猴蹂,前端可直接使用 ajax 獲取數(shù)據(jù)

獲取某城市對(duì)應(yīng)的天氣接口://jirenguapi.applinzi.com/weather.php?city=北京
服務(wù)端支持 CORS 跨域調(diào)用院溺,前端可直接使用 ajax 獲取數(shù)據(jù), 如果不傳遞參數(shù)默認(rèn)獲取當(dāng)前用戶(hù)所在城市的天氣
代碼

(mission 15)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市磅轻,隨后出現(xiàn)的幾起案子珍逸,更是在濱河造成了極大的恐慌逐虚,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谆膳,死亡現(xiàn)場(chǎng)離奇詭異叭爱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)漱病,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)买雾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人杨帽,你說(shuō)我怎么就攤上這事漓穿。” “怎么了睦尽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵器净,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我当凡,道長(zhǎng)山害,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任沿量,我火速辦了婚禮浪慌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朴则。我一直安慰自己权纤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布乌妒。 她就那樣靜靜地躺著汹想,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撤蚊。 梳的紋絲不亂的頭發(fā)上古掏,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音侦啸,去河邊找鬼槽唾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛光涂,可吹牛的內(nèi)容都是我干的庞萍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼忘闻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钝计!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤私恬,失蹤者是張志新(化名)和其女友劉穎交播,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體践付,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年缺厉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了永高。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡提针,死狀恐怖命爬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辐脖,我是刑警寧澤饲宛,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站嗜价,受9級(jí)特大地震影響艇抠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜久锥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一家淤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瑟由,春花似錦絮重、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至殴瘦,卻和暖如春狠角,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背痴施。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工擎厢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辣吃。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓动遭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親神得。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厘惦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容