Danh mục : Ajax - Jquery

Jquery 7 - AJAX – Phần 1

Trong những năm gần đây, người ta hay đánh giá một trang web dựa vào công nghệ mà trang đó đang ứng dụng. Một trong những công nghệ trở nên rất đình đám trong thời gian gần đây là ứng dụng web được gọi là AJAX. Nó là tổng hợp của nhiều công nghệ khác nhau.  

Chương 7: AJAX  Phần 1

 

Trong những năm gần đây, người ta hay đánh giá một trang web dựa vào công nghệ  trang

đó đang ứng dụng. Một trong những công nghệ trở nên rất đình đám trong thời gian gần đây

 ứng dụng web được gọi  AJAX.   tổng hợp của nhiều công nghệ khác nhau.

 

 

AJAX  chữ viết tắt của Asynchronous JavaScript and XML. Những công nghệ  trong một

giải pháp AJAX bao gồm

 

·      JavaScript dùng để tương tác với người dùng hoặc các sự kiện liên quan đến trình

duyệt.

 

·      Đối tượng XMLHttpRequest, cho phép những câu lệnh truy vấn được gửi đến server

 không làm gián đoạn những tác vụ khác của trình duyệt

·      XML  trên server, hoặc những định dạng dữ liệu tương tự như HTML  JSON

·      Thêm JavaScript, dùng để chuyển đổi dữ liệu từ server  hiển thị  lên trang web.

 

Công nghệ AJAX được ca tụng như  vị cứu tinh của thế giới web,  biến những trang web

tĩnh thành những ứng dụng  tính tương tác cao. Rất nhiều frameworks được tạo ra để giúp

các lập trình viên học cách sử dụng nó, chính bởi sự không nhất quán của trình duyệt trong

việc ứng dụng đối tượng XMLHttpRequest, jQuery cũng không phải  ngoại lệ.

Chúng ta sẽ xem xem AJAX  thực sự kỳ diệu như người ta hay nói không.

 

Tải dữ liệu khi được yêu cầu

 

Đằng sau ánh hoàng quang, thì AJAX thực sự chỉ  một công cụ dùng để tải dữ liệu từ server

về trình duyệt  không cần phải refresh lại trang web. Những dữ liệu này  nhiều định

dạng  chúng ta cũng  nhiều lựa chọn để làm việc với  khi  được tải xong.

 

Chúng ta sẽ xây dựng một trang web hiển thị những từ mới trong cuốn từ điển, các nhóm từ

được gom lại dưới một chữ cái như trong từ điển.  HTML để định dạng vùng nội dung của

trang sẽ như sau:

 

<div id="dictionary">

</div>

 

Yep! Chỉ  vậy thôi. Trang web của chúng ta sẽ không  nội dung nào hết. Chúng ta sẽ sử

dụng những phương thức AJAX của jQuery để hiển thị thẻ <div> với cuốn từ điển.

 

Chúng ta sẽ cần một nơi để kích hoạt quá trình tải dữ liệu, do vậy chúng ta sẽ thêm vào vài

đường liên kết để sau này mình  nơi để gán bộ xử  sự kiện.

 

<div class="letters">

<div class="letter" id="letter-a">

<h3><a href="#">A</a></h3>

</div>

<div class="letter" id="letter-b">

<h3><a href="#">B</a></h3>

</div>

<div class="letter" id="letter-c">

<h3><a href="#">C</a></h3>

</div>

<div class="letter" id="letter-d">

<h3><a href="#">D</a></h3>

</div>

</div>

 

Thêm một chút CSS, chúng ta  một trang như sau

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bây giờ chúng ta tập trung vào phần lấy nội dung cho trang.

 

Gán HTML vào

 

Ứng dụng AJAX thường chỉ  những truy vấn để  được những đoạn  HTML. Kỹ thuật

này đôi khi còn được gọi  AHAH (Asynchronous HTTP and HTML), lại quá đơn giản với

jQuery. Trước hết chúng ta cần một đoạn  HTML để chèn, chúng ta sẽ tạo một file mới đặt

tên  a.html. File HTML này sẽ   như sau:

 

<div class="entry">

<h3 class="term">ABDICATION</h3>

<div class="part">n.</div>

<div class="definition">

An act whereby a sovereign attests his sense of the high

temperature of the throne.

<div class="quote">

<div class="quote-line">Poor Isabella's Dead, whose

abdication</div>

<div class="quote-line">Set all tongues wagging in the

Spanish nation.</div>

<div class="quote-line">For that performance 'twere

unfair to scold her:</div>

<div class="quote-line">She wisely left a throne too

hot to hold her.</div>

<div class="quote-line">To History she'll be no royal

riddle &mdash;</div>

<div class="quote-line">Merely a plain parched pea that

jumped the griddle.</div>

<div class="quote-author">G.J.</div>

</div>

</div>

</div>

<div class="entry">

<h3 class="term">ABSOLUTE</h3>

<div class="part">adj.</div>

<div class="definition">

Independent, irresponsible. An absolute monarchy is one

in which the sovereign does as he pleases so long as he

pleases the assassins. Not many absolute monarchies are

left, most of them having been replaced by limited

monarchies, where the sovereign's power for evil (and for

good) is greatly curtailed, and by republics, which are

 

governed by chance.

</div>

</div>

 

Đây  hình  chúng ta sẽ  được, tất nhiên  nhìn hơi “cùi”  chưa  định dạng  hết.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bạn cũng nên chú ý  file a.html không phải  một tài liệu HTML thực sự, bởi   không

 thể <html>, <head>  <body>. Đây  những thẻ bắt buộc phải  cho một tài liệu

HTML. Những file như thế này được gọi  mảnh hoặc đoạn mã, mục đích tồn tại của  chỉ

dùng để chèn vào những tài liệu HTML khác, đây chính  việc chúng ta sẽ làm.

 

$(document).ready(function() {

$('#letter-a a').click(function() {

$('#dictionary').load('a.html');

return false;

});

});

 

Phương thức .load() sẽ làm tất cả những việc còn lại cho chúng ta. Chúng ta chỉ cho 

đường dẫn đến đoạn  cần chèn bằng cách sử dụng những bộ chọn jQuery thông thường, 

sau đó đưa URL của tên file  chúng ta cần tải dưới dạng tham số của phương thức. Bây giờ

nếu bạn nhấp chuột vào đường liên kết đầu tiên, tệp tin đó sẽ được tải  đặt vào trong <div

id=’dictionary’>. Trình duyệt sẽ xử  đoạn  HTML mới ngay khi  được chèn vào.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bạn nhận thấy rằng  HTML của chúng ta đã tự động  định dạng CSS còn trước đây thì

 không  định dạng gì. Bởi  ngay sau khi đoạn  HTML này được chèn vào trang thì

 sẽ chịu ảnh hưởng bởi các luật CSS của trang  được chèn vào.

 

Khi bạn thử nhấn một chữ thì định nghĩa của từ đó sẽ xuất hiện gần như ngay lập tức. Đây

chính  điểm nhầm lẫn khi bạn làm việc local. Bạn sẽ không thấy được thời gian phải đợi để

truyền tải tài liệu trên mạng. Giả sử chúng ta thêm một thông báo khi định nghĩa của từ đã tải

xong

 

$(document).ready(function() {

$('#letter-a a').click(function() {

$('#dictionary').load('a.html');

alert('Loaded!');

return false;

});

});

 

Khi bạn nhìn vào đoạn  jQuery  trên bạn  thể nghĩ rằng hộp thông báo chỉ xuất hiện sau

khi tài liệu đã được tải xong. Những lệnh của JavaScript  đồng bộ, làm xong với tác vụ này

mới đến tác vụ khác theo trật tự nghiêm ngặt.

Nhưng nếu đoạn  này được chạy thử trên host thật thì bảng thông báo xuất hiện  biến

mất trước khi quá trình tải hoàn thành, đó chính  do sự chậm trễ của mạng. Điều này xảy ra

  những cuộc gọi của AJAX  không đồng bộ. Nếu không thì ta phải gọi   SJAX,

nghe đã không thấy phê rồi.

 

Tải dữ liệu không đồng bộ  nghĩa  một khi truy vấn HTTP gửi đi để lấy đoạn  HTML

về được sử dụng, đoạn  vừa gửi truy vấn đó lập tức quay lại hoạt động  không chờ thêm

 nữa. Khoảng một lúc sau, trình duyệt nhận được phản hồi từ server  xử  nó. Thường thì

đây  điều mình muốn bởi  bạn không muốn khóa cửa sổ duyệt web của người dùng trong

khi chờ tải dữ liệu.

 

Nhưng nếu bạn muốn đoạn  phải chờ cho đến khi quá trình tải hoàn thành, jQuery cung

cấp một hàm truy hồi cho vấn đề này. Chúng ta hãy xem  dụ dưới đây

 

Làm việc với đối tượng JavaScript

 

Để tải được một trang HTML được định dạng đầy đủ rất đơn giản, nhưng cũng  lúc chúng

ta muốn đoạn  của mình  thể xử  dữ liệu trước khi  được hiển thị. Trong trường hợp

này, chúng ta cần lấy dữ liệu ra với cấu trúc  chúng ta  thể dùng JavaScript để thao tác.

 

Với bộ chọn jQuery, chúng ta  thể di chuyển qua lại trong HTML  thao tác với nó, nhưng

trước hết  phải được chèn vào tài liệu đã. Định dạng dữ liệu thuần JavaScript hơn  nghĩa

 bạn ít phải viết ít  hơn.

Lấy ra một đối tượng JavaScript

 

Như chúng ta thường thấy, đối tượng JavaScript chỉ  tập hợp của những cặp key-value, 

 thể được định nghĩa ngắn gọn với cặp ngoặc cong {}. Trái lại, mảng JavaScript lại được

định nghĩa bằng cặp ngoặc vuông []. Kết hợp hai khái niệm này, chúng ta  thể biểu đạt

được những cấu trúc phức tạp  giàu dữ liệu.

 

Khái niệm JavaScript Object Notation (JSON) được giới thiệu bởi Douglas Crockford để tận

dụng thế mạnh về  pháp đơn giản này. Bản  pháp này cho chúng ta một sự thay thế hoàn

hảo cho định XML,   lúc rất cồng kềnh.

 

{

"key": "value",

"key 2": [

"array",

"of",

"items"

]

}

 

Lưu ý: Nếu bạn muốn biết thêm những thông tin về thế mạnh của JSON  nhứng ứng dụng

của  cho những ngôn ngữ lập trình khác, bạn  thể vào trang web www.json.org

 

Chúng ta  thể  hóa dữ liệu của chúng ta bằng cách sử dụng định dạng này bằng nhiều

cách. Chúng ta sẽ để vài mục từ trong từ điển  một file JSON  đặt tên  b.json. Đoạn 

sẽ như sau

 

[

{

"term": "BACCHUS",

"part": "n.",

"definition": "A convenient deity invented by the...",

"quote": [

"Is public worship, then, a sin,",

"That for devotions paid to Bacchus",

 

"The lictors dare to run us in,",

"And resolutely thump and whack us?"

],

"author": "Jorace"

},

{

"term": "BACKBITE",

"part": "v.t.",

"definition": "To speak of a man as you find him when..."

},

{

"term": "BEARD",

"part": "n.",

"definition": "The hair that is commonly cut off by..."

},

 

Để lấy dữ liệu này ra, chúng ta sẽ sử dụng phương thức $.getJSON(), phương thức này sẽ tìm

nạp tệp tin  xử  nó, kết quả của đoạn  được gọi sẽ  đối tượng JavaScript.

 

Hàm jQuery toàn cục

 

Cho đến thời điểm này, những phương thức  chúng ta sử dụng được gán vào một đối

tượng jQuery  chúng ta tạo ra bằng cách sử dụng hàm $(). Bộ chọn cho phép chúng ta

chọn ra một điểm trong DOM để các phương thức của chúng ta làm việc trên chúng. Nhưng

hàm $.getJSON thì lại khác.  sẽ không được áp dụng lên bất cứ phần tử DOM nào, đối

tượng trả về phải được sử dụng cho đoạn  chứ không phải  chèn vào trang. Chính  

do này  hàm getJSON() được định nghĩa  phương thức đối tượng jQuery toàn cục (một

đối tượng được gọi bởi jQuery hoặc được $ xác định một lần bởi jQuery) chứ không phải một

phiên bản đối tượng jQuery (đối tượng được chúng ta tạo với hàm $().

 

Nếu JavaScript  class như những ngôn ngữ lập trình hướng đối tượng khác, thì chúng ta sẽ

gọi $.getJSON()  một phương thức class. Do vậy chúng ta gọi phương pháp dạng này 

hàm toàn cục, trong thực tế,   những hàm sử dụng dấu cách jQuery để tránh bị xung đột

với tên của các hàm khác.

 

Để sử dụng hàm này, chúng ta truyền qua tên file như trước:

 

$(document).ready(function() {

$('#letter-b a').click(function() {

$.getJSON('b.json');

return false;

});

});

 

Đoạn  trên không tạo ra thay đổi   ràng khi bạn nhấp vào đường liên kết. Hàm được

gọi sẽ tải tệp tin, nhưng chúng ta chưa bảo JavaScript phải làm  với dữ liệu  được. Do vậy

chúng ta phải sử dụng hàm truy hồi.

 

Hàm $.getJSON() lấy vào một tham số thứ 2, tham số này cũng chính  một hàm được gọi

khi quá trình tải hoàn thành. Như đã nói trước đây, những cuộc gọi của AJAX  dạng không

đồng bộ, cho nên hàm truy hồi sẽ đợi cho dữ liệu được tải hết thay  chạy đoạn  ngay lập

tưc. Hàm truy hồi này cũng lấy vào một tham số nữa dùng để chứa dữ liệu thu về. Nên chúng

ta  thể viết:

 

$(document).ready(function() {

$('#letter-b a').click(function() {

$.getJSON('b.json', function(data) {

});

return false;

});

});

 

 đây chúng ta sử dụng một hàm ẩn như  hàm truy hồi, như một cách viết tắt phổ biến

trong jQuery. Một hàm  thể được sử dụng làm hàm truy hồi.

 

Bên trong hàm này, chúng ta  thể sử dụng biến số data để di chuyển trong cấu trúc dữ liệu

nếu cần. Chúng ta cần phải chạy lên mảng trên cùng, xây dựng HTML cho từng phần tử.

Chúng ta cũng  thể làm việc này với một vòng for, nhưng thay vào đó, chúng ta sẽ làm

quen với một hàm toàn cục nữa của jQuery  $.each(). Chúng ta đã biết một hàm gần giống

  phương thức .each() trong chương 5. Thay  chỉ làm việc với một đối tượng jQuery,

hàm này lấy vào một mảng hoặc một biểu đồ làm tham số thứ nhất  một hàm truy hồi làm

tham số thứ 2. Mỗi lần vòng lặp chạy thì chỉ số lặp hiện tại  phần tử hiện tại trong mảng

hoặc biểu đồ được chuyển vào như hai tham số cho hàm truy hồi.

 

$(document).ready(function() {

$('#letter-b a').click(function() {

$.getJSON('b.json', function(data) {

$('#dictionary').empty();

$.each(data, function(entryIndex, entry) {

var html = '<div class="entry">';

html += '<h3 class="term">' + entry['term'] + '</h3>';

html += '<div class="part">' + entry['part'] + '</div>';

html += '<div class="definition">';

html += entry['definition'];

html += '</div>';

html += '</div>';

$('#dictionary').append(html);

});

});

return false;

});

});

 

Trước khi vòng lặp bắt đầu, chúng ta đã làm rỗng thẻ <div id=’dictionary’>, do vậy chúng ta

 thể chèn vào  HTML vừa tạo được. Sau đó chúng ta sử dụng hàm $.each() để kiểm tra

từng phần tử một, xây dựng cấu trúc HTML dựa vào nội dung của biểu đồ. Cuối cùng chúng

ta biến đoạn  HTML thành cây DOM bằng cách gán  vào thẻ <div>

 

Lưu ý: cách này giả sử rằng dữ liệu tải về  an toàn để sử dụng với HTML,  không được

 những  hiệu như kiểu <.

 

Bây giờ chỉ còn phần trích dẫn của mục từ trong từ điển, bằng cách sử dụng một vòng lặp

$.each() nữa.

 

$(document).ready(function() {

$('#letter-b a').click(function() {

$.getJSON('b.json', function(data) {

$('#dictionary').empty();

$.each(data, function(entryIndex, entry) {

var html = '<div class="entry">';

 

html += '<h3 class="term">' + entry['term'] + '</h3>';

html += '<div class="part">' + entry['part'] + '</div>';

html += '<div class="definition">';

html += entry['definition'];

if (entry['quote']) {

html += '<div class="quote">';

$.each(entry['quote'], function(lineIndex, line) {

html += '<div class="quote-line">' + line + '</div>';

});

if (entry['author']) {

html += '<div class="quote-author">' + entry['author'] + '</div>';

}

html += '</div>';

}

html += '</div>';

html += '</div>';

$('#dictionary').append(html);

});

});

return false;

});

});

 

Bây giờ bạn  thể thử nhấp chuột vào chữ B để xem thử kết quả

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Lưu ý: định dạng JSON rất ngắn gọn nhưng nghiêm ngặt. Mỗi dấu ngoặc, dấu nháy hay dấu

phải đều phải đầy đủ  chính xác, nếu không tệp tin sẽ không được tải. Trong phần lớn các

 

trình duyệt, thậm chí  còn không báo lỗi  cả đoạn  hoàn toàn không chạy một cách

âm thầm.

 

Chạy một đoạn 

 

Đôi khi chúng ta không muốn lấy về tất cả  JavaScript khi trang web được tải lần đầu tiên.

Chúng ta không biết đoạn  nào  cần thiết cho đến khi  những tương tác của người

dùng. Chúng ta cũng  thể sử dụng thẻ <script> nếu cần nhưng  một cách khác hay hơn để

chèn thêm  vào  dùng jQuery để tải trực tiếp tệp tin .js

Để chèn vào một đoạn  cũng đơn giản như khi chèn một đoạn HMTL. Trong trường này

chúng ta sử dụng hàm toàn cục $.getScript(), hàm này cũng như những hàm cùng chức năng

của nó, chấp nhận một địa chỉ URL trỏ đến vị trí của tệp tin.

 

$(document).ready(function() {

$('#letter-c a').click(function() {

$.getScript('c.js');

return false;

});

});

 

  dụ cuối cùng của chúng ta, chúng ta cần phải xử  dữ liệu trả về để mình  thể làm một

cái  đó với tệp tin được tải về. Nhưng với những tệp tin chứa mã, quá trình xử   hoàn

toàn tự động, một khi được tải đoạn  sẽ tự chạy.

 

 được tải bằng cách này sẽ chạy trong ngữ cảnh toàn cục của trang hiện tại. Điều đó 

nghĩa  chúng  thể đến được tất cả những hàm  các biến số được khai báo toàn cục, kể

cả bản thân jQuery. Cho nên chúng ta  thể bắt chước  dụ về JSON để chuẩn bị  chèn

HTML vào trang khi đoạn  được thực thi,  đặt đoạn  này vào tệp c.js:

 

var entries = [

{

"term": "CALAMITY",

"part": "n.",

"definition": "A more than commonly plain and..."

},

{

"term": "CANNIBAL",

"part": "n.",

"definition": "A gastronome of the old school who..."

},

{

"term": "CHILDHOOD",

"part": "n.",

"definition": "The period of human life intermediate..."

},

{

"term": "CLARIONET",

"part": "n.",

"definition": "An instrument of torture operated by..." },

{

"term": "COMFORT",

"part": "n.",

"definition": "A state of mind produced by..."

},

{

"term": "CORSAIR",

 

"part": "n.",

"definition": "A politician of the seas."

}

];

var html = '';

$.each(entries, function() {

html += '<div class="entry">';

html += '<h3 class="term">' + this['term'] + '</h3>';

html += '<div class="part">' + this['part'] + '</div>';

html += '<div class="definition">' + this['definition'] + '</div>';

html += '</div>';

});

$('#dictionary').html(html);

},

{

"term": "COMFORT",

"part": "n.",

"definition": "A state of mind produced by..."

},

{

"term": "CORSAIR",

"part": "n.",

"definition": "A politician of the seas."

}

];

var html = '';

$.each(entries, function() {

html += '<div class="entry">';

html += '<h3 class="term">' + this['term'] + '</h3>';

html += '<div class="part">' + this['part'] + '</div>';

html += '<div class="definition">' + this['definition'] + '</div>';

html += '</div>';

});

$('#dictionary').html(html);

 

Bạn thử nhấn vào chữ cái C để xem kết quả.

 

 

 

 

 

 

 

 

Tải tài liệu XML

 

XML  một phần trong những chữ cái viết tắt của AJAX, nhưng chúng ta vẫn chưa tải XML

lần nào. Cách tải tệp XML cũng khá đơn giản  rất giống với cách  chúng ta làm với

JSON. Trước hết chúng ta cần một tệp XML  đặt tên  d.xml  chứa những dữ liệu chúng

ta cần hiển thị.

 

<?xml version="1.0" encoding="UTF-8"?>

<entries>

<entry term="DEFAME" part="v.t.">

<definition>

To lie about another. To tell the truth about another.

</definition>

</entry>

<entry term="DEFENCELESS" part="adj.">

<definition>

Unable to attack.

</definition>

</entry>

<entry term="DELUSION" part="n.">

<definition>

The father of a most respectable family, comprising

Enthusiasm, Affection, Self-denial, Faith, Hope,

Charity and many other goodly sons and daughters.

</definition>

<quote author="Mumfrey Mappel">

<line>All hail, Delusion! Were it not for thee</line>

<line>The world turned topsy-turvy we should see;

</line>

<line>For Vice, respectable with cleanly fancies,

 

</line>

<line>Would fly abandoned Virtue's gross advances.

</line>

</quote>

</entry>

<entry term="DIE" part="n.">

<definition>

The singular of "dice." We seldom hear the word,

because there is a prohibitory proverb, "Never say

die." At long intervals, however, some one says: "The

die is cast," which is not true, for it is cut. The

word is found in an immortal couplet by that eminent

poet and domestic economist, Senator Depew:

</definition>

<quote>

<line>A cube of cheese no larger than a die</line>

<line>May bait the trap to catch a nibbling mie.</line>

</quote>

</entry>

</entries>

 

Tất nhiên dữ liệu này  thể được biểu thị bằng nhiều cách,  một số phần rất giống với cấu

trúc  chúng ta đã làm với HTML  JSON trước đây. Nhưng trong  dụ này bạn sẽ được

làm quen với một vài chức năng của XML được thiết kế để con người còn  thể hiểu được,

như  cách sử dụng thuộc tính cho term  part thay  dùng thẻ.

Chúng ta cũng bắt đầu hàm với cách quen thuộc

 

$(document).ready(function() {

$('#letter-d a').click(function() {

$.get('d.xml', function(data) {

});

return false;

});

});

 

Lần này chúng ta sử dụng hàm $.get(). Nói chung, hàm này chỉ đơn thuần  truy xuất tệp tin

 địa chỉ URL cho trước  cung cấp một đoạn chữ trắng không định dạng cho hàm truy hồi.

Nhưng nếu phản hồi lại  định dạng XML dựa vào MINE type của server cung cấp, hàm truy

hồi sẽ nhận được cây XML DOM.

 

Cũng may cho chúng ta  jQuery  khả năng di chuyển rất tốt trong DOM. Chúng ta  thể

sử dụng phương thức .find(), .filter()  những phương thức di chuyển khác trong tài liệu

XML y như cách  chúng ta làm việc với HTML.

 

$(document).ready(function() {

$('#letter-d a').click(function() {

$.get('d.xml', function(data) {

$('#dictionary').empty();

$(data).find('entry').each(function() {

var $entry = $(this);

var html = '<div class="entry">';

html += '<h3 class="term">' + $entry.attr('term')

+ '</h3>';

html += '<div class="part">' + $entry.attr('part')

+ '</div>';

html += '<div class="definition">';

html += $entry.find('definition').text();

 

var $quote = $entry.find('quote');

if ($quote.length) {

html += '<div class="quote">';

$quote.find('line').each(function() {

html += '<div class="quote-line">'

+ $(this).text() + '</div>';

});

if ($quote.attr('author'))

html += '<div class="quote-author">'

+ $quote.attr('author') + '</div>';

}

html += '</div>';

}

html += '</div>';

html += '</div>';

$('#dictionary').append($(html));

});

});

return false;

});

});

 

Bạn nhấn thử chữ D để xem kết quả

 

 

 

 

 

 

Đây  một cách mới trong những phương thức di chuyển trong DOM  chúng ta đã biết,

cho ta thấy tính linh động của bộ chọn CSS trong jQuery.  pháp của CSS thường được sử

dụng để làm đẹp cho trang HTML, cho nên bộ chọn tiêu chuẩn trong file .css sử dụng tên thẻ

HTML như div  body để tìm đến nội dung. Tuy nhiên, jQuery cũng  thể sử dụng những

thẻ XML thông thường như  entry  definition, như cách  chúng ta sử dụng HTML.

 

Những bộ chọn nâng cao của jQuery còn cho phép tìm đến những phần  tài liệu XML trong

những trường hợp phức tạp hơn nhiều.  dụ chúng ta muốn giới hạn hiển thị những mục từ

 chứa câu trích dẫn  thuộc tính author. Để làm được điều này, chúng ta  thể giới hạn

những mục từ  chứa các phần tử <quotes> bằng cách thay đổi entry thành entry:has(quote).

Sau đó chúng ta cũng  thể giới hạn thêm những mục từ  chứa thuộc tính author trong

phần bằng cách viết entry:has(quote[author]). Bây giờ bộ chọn của chúng ta sẽ như sau:

 

$(data).find('entry:has(quote[author])').each(function() {

 

Biểu thức bộ chọn bây giờ giới hạn những mục từ như hình

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Tags