Upgrade to Pro — share decks privately, control downloads, hide ads and more …

資訊實務應用讀書會 第七堂課:jQuery

Maplewing
November 11, 2013

資訊實務應用讀書會 第七堂課:jQuery

資訊實務應用讀書會 第七堂課:jQuery

Maplewing

November 11, 2013
Tweet

More Decks by Maplewing

Other Decks in Programming

Transcript

  1. DOM: Document Object Model <!DOCTYPE html> <html> <head> <title>jQuery大冒險</title> </head>

    <body> <h1>jQuery冒險團</h1> <p>歡迎一起使用jQuery吧!</p> </body> </html> document html head title jQuery大冒險 body h1 jQuery冒險團 p 歡迎一起使用jQuery
  2. Document •尋找document: jQuery(document) - 可以簡寫成 $(document) document html head title

    jQuery大冒險 body h1 jQuery冒險團 p 歡迎一起使用jQuery document
  3. CSS Selector document html head title jQuery大冒險 body h1 jQuery冒險團

    p 歡迎一起使用jQuery h1 { color: green; } p { color: gray; }
  4. CSS Selector •尋找h1元素 • $(“h1”) document html head title jQuery大冒險

    body h1 jQuery冒險團 p 歡迎一起使用jQuery h1 •尋找p元素 •$(“p”) p
  5. Question: How to select the “Knight”? •Answer: •$(‘#knight’) •$(‘li#knight’) •$(‘ul

    :first’) •$(‘ul li:first’) •$(‘ul li:first-child’) h2 勇者列表 ul 騎士 li#knight li li 弓箭手 魔法師 body
  6. • $(’.knight, .archer’) • 可利用Traversing方法代替: • $(‘.knight’).add(‘.archer’) • $(‘.knight .archer’)

    • 可利用Traversing方法代替: • $(‘.knight’).find(‘.archer’) • $(‘.knight > .archer’) • 可利用Traversing方法代替: $(‘.knight’).children(‘.archer’) • $(‘.knight.archer’) • 可利用Traversing方法代替: • $(‘.knight’).filter(‘.archer’)
  7. Walking the DOM • 往子節點走 .find(selector) .children(selector) • 往父節點走 .parent()

    .parents(selector) .closest(selector) • 往兄弟姊妹節點走 .next() .prev() h2 勇者列表 ul 騎士 li#knight li li 弓箭手 魔法師 body
  8. HTML5: data • <ul data-price=“200”> .... • data屬性 • 指的就是像是

    data-名稱 這樣的屬性,可讓元素攜帶資料。
  9. Node document • var sonic = $(‘<p>Sonic</p>’); • $(‘.knight’).append(sonic); •

    讓sonic節點成為.knight內最後一個兒子 • sonic.appendTo($(‘.knight’)); • $(‘.knight’).prepend(sonic); • 讓sonic節點成為.knight內第一個兒子 • sonic.prependTo($(‘.knight’)); • $(‘.knight’).after(sonic); • 讓sonic節點成為.knight的弟妹 • sonic.insertAfter($(‘.knight’)); • $(‘.knight’).before(sonic); • 讓sonic節點成為.knight的兄姊 • sonic.insertBefor($(‘.knight’)); h2 勇者列表 p.knight body before after prepend before append 騎士
  10. CSS .css( propertyName ) 取得該元素之css的該property值 .css( propertyName, propertyValue ) 更改該元素之css之值

    .css( object ) Ex. .css({‘background-color’:’blue’}) 可更改該元素多個CSS的Property的值
  11. $(<element>).on( event, handler ) 可在該元素觸發該event的時候,會呼叫handler(呼叫時會傳入 eventObject)。 通常可簡化為$(<element>).<event>(handler)的形式 $(<element1>).on(event, element2, handler)

    掛事件handler於element1裡面的所有element2元素上。 若element2會是動態產生的Node時可方便使用。 相反地,要取消掉事件handler請使用.off(...)
  12. Mouse Events • click • dblclick • mousedown • mouseenter

    • mouseleave • mouseup • event.which可抓到按下去的鍵為何者。
  13. CSS: • display: none; • 在jQuery裡可用 $(<element>).hide() • display: block;

    • 把該element元素變為顯示成block元素。 • 可用於顯示東西出來。 • 在jQuery裡可用 $(<element>).show() • 在jQuery想display成不同的樣子,請用.css
  14. Http GET Request $.get(url, [data], [success(data, textStatus, XHR)], [dataType]); -利用GET方法,傳送給PHP自己的名稱,回傳”Hello,

    名 稱”的字串顯示在p標籤上 $.get(‘hello.php’, {name: “Maplewing”}, function(data){ $(‘p’).text(data); }); echo “Hello, ” . $_GET[‘name’];
  15. Http POST Request $.post (url, [data], [success(data, textStatus, XHR)], [dataType]);

    -利用POST方法,傳送給PHP自己的名稱,回傳”Hello, 名稱”的字串顯示在p標籤上 $.post(‘hello.php’, {name: “Maplewing”}, function(data){ $(‘p’).text(data); }); echo “Hello, ” . $_POST[‘name’];
  16. Script JSON • $.getScript( url, [ success(script, textStatus, jqXHR) ]

    ) • 可動態載入Script • $.getJSON( url, [ data ], [ success( data, textStatus, jqXHR ) ] ) • 資料若是JSON格式,則可直接指定JSON,並且傳回來的data會直接成 為Javascript Object來使用。