Danh mục : Ajax - Jquery

Jquery 2 - Giới thiệu về jQuery

Thư viện jQuery tận dụng kiến thức và thế mạnh của CSS Selector để cho phép bạn nhanh chóng và dễ dàng truy cập nhiều phần tử hoặc nhóm các phần tử trong DOM (Document Object Model). Trong chương 2 này chúng ta sẽ khám phá một vài những Selector này và cả những Selector của jQuery. Chúng ta cũng sẽ tìm hiểu thêm về cách di chuyển trong cây thư mục và nó cho chúng ta thêm linh động để đạt được những gì mình muốn.

Chương 2  jQuery Selectors

 

Thư viện jQuery tận dụng kiến thức  thế mạnh của CSS Selector để cho phép bạn nhanh

chóng  dễ dàng truy cập nhiều phần tử hoặc nhóm các phần tử trong DOM (Document

Object Model). Trong chương 2 này chúng ta sẽ khám phá một vài những Selector này  cả

những Selector của jQuery. Chúng ta cũng sẽ tìm hiểu thêm về cách di chuyển trong cây thư

mục   cho chúng ta thêm linh động để đạt được những  mình muốn.

 

 

 

 

Document Object Model (Mô hình đối tượng tài liệu)

 

Một trong những tính năng mạnh mẽ nhất của jQuery  khả năng chọn các thành phần trong

DOM một cách dễ dàng. Nói nôm na thì DOM  một dạng phả hệ của các thành phần

HTML. Các thành phần này  mối tương quan với nhau như một “gia đình” HTML hạnh

phúc. Khi chúng ta nói đến các mối quan hệ này bạn hãy liên tưởng đến mối quan hệ trong

gia đình như ông bà, bố mẹ, anh chị em v.v.. Bạn  thể xem bài Hướng đối tượng dựa vào

cấp bậc XHTML để biết  hơn về mối quan hệ của các thành phần HTML.

 

Hàm $()

 

Cho  bạn sử dụng Selector nào đi chăng nữa trong jQuery, bạn luôn bắt đầu bằng một dấu

dollar ($)  một đôi ngoặc đơn như: $(). Tất cả những   thể được sử dụng trong CSS

cũng  thể được lồng vào dấu ngoặc kép (”)  đặt vào trong hai dấu ngoặc đơn, cho phép

chúng ta áp dụng các phương pháp jQuery cho tập hợp các phần tử phù hợp.

 

Ba thành phần quan trọng nhất của jQuery Selector  tên thẻ HTML, ID  Class. Bạn  thể

chỉ sử dụng  hoặc kết hợp với những Selector khác để chọn. Dưới đây  một  dụ về mỗi

Selecter khi sử dụng một mình.

 

 

 

 

 

 

 

 

 

 

 

 

 

Như đã nói  chương 1, khi chúng ta thêm các phương pháp vào hàm $(), thì các phần tử nằm

trong đối tượng jQuery sẽ được tự động loop  diễn ra  “hậu trường”. Cho nên chúng ta

không cần phải sử dụng bất cứ một vòng lặp nào cả, như vòng lặp for chẳng hạn, điều này

thường phải làm trong khi viết code về DOM. Sau khi bạn đã nằm bắt được những khái niệm

 bản, bây giờ chúng ta sẽ khám phá thêm những tính năng mạnh mẽ khác của jQuery.

 

CSS Selector

 

Thư viện jQuery hỗ trợ gần như toàn bộ các CSS Selector chuẩn từ CSS1 cho đến CSS3.

Chính việc này đã cho phép những người làm web không phải lo lắng về liệu trình duyệt đó

 hỗ trợ những Selector mới hay không (đặc biệt  trình duyệt IE) miễn  trình duyệt đó 

bật JavaScript.

 

Lưu ý: những người làm web  kinh nghiệm  trách nhiệm luôn nên áp dụng nguyên tắc

nâng cao luỹ tiến  giáng cấp hài hoà cho code của họ. Họ phải luôn chắc chắn rằng trang

web luôn được hiển thị chính xác, cho  không được đẹp như khi JavaScript bị tắt hoặc khi

 được bật. Chúng ta sẽ bàn thêm về nguyên tắc này trong suốt chiều dài của loạt bài này.

 

Để tìm hiểu jQuery sử dụng CSS Selector như thế nào thì cách tốt nhất  làm bằng  dụ.

Trong  dụ dưới đây chúng ta sẽ sử dụng một dạng danh sách thường được dùng để làm

thanh di chuyển trên web. Code HTML sẽ như sau.

 

<ul id="nav">

<li><a href="#">Home Page</a></li>

<li><a href="#">About Me</a></li>

<li><a href="#">Forum</a></li>

<li><a href="ebook.pdf">Ebooks</a>

<ul>

<li><a href="#">jQuery</a></li>

<li><a href="#">CSS</a></li>

<li><a href="#">HTML</a></li>

</ul>

</li>

<li><a href="http://www.jquery.com">Tutorials</a></li>

<li><a href="#">Photoshop</a>

<ul>

<li><a href="#">Action</a></li>

<li><a href="#">Effect</a></li>

<li><a href="#">Plugins</a></li>

</ul>

</li>

<li><a href="mailto:[email protected]">Email</a></li>

</ul>

 

Trong đoạn code HTML  trên chúng ta đơn giản chỉ  một unorder list với id=”nav” đóng

vai trò  menu chính. Khi chưa  style  áp dụng vào  thì kết quả khi xem  trình duyệt

sẽ như hình dưới đây. Đây chính  định dạng mặc định của trình duyệt cho các Unorder List.

 

Định dạng list-item

 

Tất nhiên trong  dụ này bạn hoàn toàn  thể sử dụng CSS để định dạng menu này, nhưng

 chúng ta muốn khám phá jQuery nên chúng ta tạm thời coi như CSS không tồn tại. Giả sử

trong  dụ này bạn muốn những list-item chính  gạch chân  những ul phụ của  sẽ

không  gạch chân.

 

.highlight {

border-bottom: 1px solid #e6db55;

padding: 5px;

}

 

Thay  chúng ta sẽ thêm class trực tiếp vào tài liệu HTML, chúng ta sẽ sử dụng jQuery để

thêm class vào những list-item tầng 1 như: Homepage, About Me, Forum, Ebooks, Tutorials,

Photoshop  Email.

 

$(document).ready(function() {

$('#nav > li').addClass('highlight');

});

 

Như đã bàn  chương 1, chúng ta bắt đầu đoạn code jQuery với $(document).ready(),  sẽ

chạy ngay khi DOM đã được load. Dòng thứ 2 sử dụng CSS Child selector (>) để thêm

class=’highlight’ chỉ cho list item tầng 1. Nói theo ngôn ngữ của chúng ta thì đoạn code trên

 nghĩa như sau: jQuery hãy tìm mỗi một list item (li)  con trực tiếp (>) của thành phần 

ID  nav (#nav). Với class=’highlight’ được thêm vào, menu của chúng ta được như sau.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Để định dạng cho những list item tầng 2  rất nhiều cách. Nhưng một trong những cách

chúng ta sẽ sử dụng trong phần này  pseudo-class phủ định. Bằng cách này chúng ta sẽ đi

xác định tất cả những item nào  không  class=’highlight’. Chúng ta sẽ viết code như sau:

 

$(document).ready(function() {

 

$('#nav > li').addClass('highlight');

$('#nav li:not(.highlight)').addClass('background');

});

 

Đoạn code trên  nghĩa như sau:

1.Chọn tất cả những danh sách  con trực tiếp của #nav

2.Những danh sách này phải không  class=’highlight’ (:not(.highlight))

 chúng ta sẽ được hình như hình dưới, tất nhiên bạn phải khai báo class=’background’

trong file CSS của mình.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Attribute Selectors

 

Attribute Selectors  bộ Selector phụ của CSS cũng rất hữu dụng.  cho phép chúng ta

chọn một thành phần nào đó dựa vào đặc tính HTML của  như: thuộc tính Title của link

hoặc thuộc tính Alt của image.  dụ để chọn tất cả các tấm hình  thuộc tính Alt chúng ta

làm như sau:

 

$('img[alt]')

 

Định dạng cho đường liên kết

 

Nếu bạn biết  qua về Regular Expressions trong ngôn ngữ lập trình như PHP thì Attribute

Selector trong jQuery chịu ảnh hưởng bởi phương pháp này.  dụ dấu (^) dùng để xác định

giá trị tại điểm bắt đầu hoặc ($) kết thúc của một chuỗi.  cũng  thể sử dụng dấu (*) để

chỉ một giá trị tại một vị trí bất kỳ trong một chuỗi hoặc sử dụng dấu chấm than (!) để biểu thị

một giá trị phủ định. Trong phần CSS này chúng ta sẽ định dạng các đường liên kết như sau:

 

a {

 

color: #00c;

}

 

.email {

padding-right: 20px;

background: url(images/mail.png) no-repeat right center;

}

 

.ebook {

padding-right: 20px;

background: url(images/pdf.png) no-repeat right center;

}

 

.hyperlink {

padding-right: 20px;

background: url(images/external.png) no-repeat right center;

}

 

Sau đó chúng ta thêm 3 class  email, ebook  hyperlink vào những đường liên kết thích

hợp bằng cách sử dụng jQuery. Để thêm một class vào tất cả những đường liên kết email,

chúng ta sẽ tạo một selector   sẽ tìm tất cả những thành phần anchor (a) với thuộc tính

href bắt đầu bằng chuỗi mailto như sau:

 

$(document).ready(function() {

$('a[href^=mailto:]').addClass('email');

});

 

Để thêm một class vào tất cả các đường liên kết đến những tệp tin .pdf, chúng ta sử dụng dấu

$ thay  dấu ^ như  trên. Bởi  lần này chúng ta chỉ chọn những đường liên kết nào 

thuộc tính href kết thúc bằng cụm .pdf.

 

$(document).ready(function() {

$('a[href^=mailto:]').addClass('mailto');

$('a[href$=.pdf]').addClass('ebook');

});

 

Attribute Selector cũng  thể được kết hợp với nhau.  dụ chúng ta cũng  thể thêm một

class  hyperlink cho tất cả các đường liên kết với giá trị href bắt đầu bằng http  chứa cụm

từ hyper trong nó.

 

$(document).ready(function() {

$('a[href^=mailto:]').addClass('mailto');

$('a[href$=.pdf]').addClass('pdflink');

$('a[href^=http][href*=jquery]').addClass('hyperlink');

});

 

Với 3 class được áp dụng như trên cho các đường liên kết, chúng ta sẽ được kết quả như hình

dưới đây. Bạn sẽ thấy cạnh mỗi đường link sẽ  thêm một hình icon chỉ cho người dùng biết

một cách rất trực quan  đường liên kết đó  về cái gì.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Selector riêng của jQuery

 

Dường như còn chưa vừa ý với những CSS Selector, jQuery  một hệ thống những Selector

của riêng nó. Hầu hết những Selector này đều cho phép chúng ta chọn bất cứ thành phần nào

trong tài liệu HTML.  pháp cho những Selector này tương đồng với  pháp của CSS

pseudo-class, nơi  các selector bắt đầu bằng dấu hai chấm (:).  dụ, để chọn thẻ div thứ 2

của tập hợp những thẻ div  class=’horizontal’, chúng ta  cách viết code như sau:

 

$('div.horizontal:eq(1)');

 

Bạn nên lưu ý  phần này  :eq(1) chọn thẻ div thử hai từ tập hợp trả về bởi  JavaScript

đánh số array bắt đầu từ số 0. Ngược lại, CSS lại  bắt đầu từ số 1. Cho nên khi bạn sử dụng

nth-child CSS Selector như  $(‘div:nth-child(1)’) sẽ chọn tất cả các thẻ div  con đầu tiên

của thành phần cha mẹ. Tất nhiên đấy  diễn giả  vậy, nhưng nếu trong thực tế thì bạn nên

dùng $(‘div:first-child’) thì hợp  hơn.

 

Định dạng bảng kiểu kẻ sọc

 

Hai trong số những jQuery selector rất hữu dụng  :0dd  :even. Trong  dụ dưới đây

chúng ta sẽ sử dụng một trong hai selector này để định dạng cho bảng kiểu kẻ sọc với code

HTML như sau:

 

<table>

<tr>

<td>Movies</td>

<td>Actors/ Actresses</td>

<td>Year Make</td>

</tr>

<tr>

 

<td>Terminator</td>

<td>arnold schwarzenegger</td>

<td>1991</td>

</tr>

<tr>

<td>Die Hard</td>

<td>Bruce Willis</td>

<td>2000</td>

</tr>

<tr>

<td>Speed</td>

<td>Sandra Bullock</td>

<td>1997</td>

</tr>

<tr>

<td>Independence Day</td>

<td>Will Smith</td>

<td>1999</td>

</tr>

<tr>

<td>Armageddon</td>

<td>Bruce Willis</td>

<td>1997</td>

</tr>

<tr>

<td>Under Siege</td>

<td>Steven Seagal</td>

<td>1996</td>

</tr>

<tr>

<td>Avatar</td>

<td>Unknown</td>

<td>2010</td>

</tr>

</table>

 

Bây giờ bạn  thể thêm style vào stylesheet cho tất cả các dòng của bảng  sử dụng một

class=’alt cho những dòng chẵn.

 

.alt {

background: #dda;

}

 

td {

padding: 10px;

}

 

Cuối cùng chúng ta sẽ viết code jQuery để gắn class vào cho những dòng chẵn của bảng (

).

 

$(document).ready(function() {

$('tr:0dd').addClass('alt');

});

 

Bạn  thấy code  trên  điều  lạ không? Odd tiếng Việt  lẻ  Even  chẵn. Chúng ta

nói sẽ  màu cho dòng chẵn nhưng lại sử dụng :0dd? Thực ra vấn đề  đây cũng tương tự

như :eq()  trên, bởi  :0dd  :even sử dụng dạng đánh số từ số 0 như trong JavaScript. Cho

 

nên dòng thứ nhất đếm  số 0 (số chẵn)  dòng thứ hai đếm  1 (số lẻ). Do đó với dòng

code jQuery như trên dưới đây  kết quả chúng ta  được.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Vấn đề  vẻ như đã được giải quyết  đây, nhưng nếu bạn  một bảng thứ hai trên cùng

một trang thì kết quả lại không như bạn muốn.  dụ, dòng cuối cùng của bảng trên  màu

cỏ úa thì dòng đầu tiên của bảng kế tiếp sẽ  màu trắng.  cách để tránh tình trạng này 

sử dụng :nth-child() Selector. Selector này  thể lấy tham số  odd, even hoặc chữ số.

Nhưng cũng lưu ý bạn  :nth-child()  selector duy nhất của jQuery đánh số theo thứ tự từ 1.

Cho nên để đạt được kết quả như mong muốn  nhất quán với nhiều bảng trên trang, chúng

ta  đoạn code mới như sau:

 

$(document).ready(function() {

$('tr:nth-child(even)').addClass('alt');

});

 

Bây giờ giả sử chúng ta muốn  đậm đỏ cho cột nào đó  chưa tên chú Bruce Willis thì

trước hết bạn phải thêm một class=’red’ vào phần stylesheet  sau đó thì viết code jQuery

như sau sử dụng :contains() Selector.

 

$(document).ready(function() {

$('tr:nth-child(even)').addClass('alt');

$('td:contains(Bruce Willis)').addClass('red');

});

 

Bây giờ thì bảng của chúng ta đã  đậm  in đỏ chú Bruce Willis.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tôi cũng phải lưu ý với bạn  :contains() Selector  phân biệt giữa IN HOA  in thường.

Cho nên nếu bạn chỉ  $(‘td:contains(bruce willis)’)  không viết hoa thì sẽ không  cột

nào được chọn cả.

 

Phải thừa nhận rằng với  dụ đơn giản như trên, bạn không cần phải sử dụng jQuery cũng

đạt được kết quả như mong muốn. Tuy nhiên, jQuery kết vợi với CSS,  một lựa chọn phù

hợp cho kiểu định dạng khi  nội dung được tạo ra tự động từ CSDL  chúng ta không 

khả năng chi phối code HTML cũng như code được xuất ra từ PHP chẳng hạn.

 

Form Selector

 

Khi làm việc với form, những selector của jQuery giúp bạn tiết kiệm thời gian để chọn chỉ

những thành phần nào mình muốn. Bảng biểu sau  những selector của jQuery để làm việc

với form.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Cũng giống như những Selector khác, form Selector cũng  thể được kết hợp để cho đối

tượng chọn được cụ thể hơn.  dụ chúng ta  thể chọn tất cả các nút radio được đánh dấu

(chứ không phải hộp kiểm) với $(‘:radio:checked’) hoặc chọn tất cả các trường nhập mật

 

khẩu  trường nhập dữ liệu bị tắt với $(‘:passowrd, :text:disabled’). Cho  với jQuery

Selector, nhưng chúng ta vẫn sử dụng nguyên tắc của CSS để chọn các phần tử cần chọn.

 

Phương pháp di chuyển trong DOM

 

Những jQuery selector vừa được giới thiệu  trên cho phép chúng ta chọn một tập hợp các

phần tử khi chúng ta di chuyển ngang qua hoặc dọc xuống cây DOM  chọn lọc kết quả.

Nếu đây  cách duy nhất để chọn các phần tử thì những lựa chọn của chúng ta cũng bị hạn

chế khá nhiều (mặc  trong thực tế những selector đã rất mạnh mẽ đặc biệt  khi mang ra so

sánh với cách di chuyển trong DOM truyền thống).  nhiều trường hợp khi bạn cần phải

chọn cha mẹ hoặc ông  của các phần tử trở nên quan trọng, chính  vậy phương pháp di

chuyển trong DOM được giới thiệu. Với những phương pháp này chúng ta  thể đi lên, đi

xuống, ngang dọc hoặc xung quanh cây DOM rất dễ dàng.

 

Một vài phương pháp  chức năng gần như tương đồng với những người ‘anh em’ Selector

 trên. Như trong  dụ về định dạng bảng kiểu kẻ sọc  trên chúng ta thêm class=’alt’ với

$(‘tr:0dd’).addClass(‘alt’); cũng  thể được viết lại với phương pháp .filter() như sau:

 

$('tr').filter(':0dd').addClass('alt');

 

Trong đa số các trường hợp thì hai cách trên bổ trợ cho nhau. Hơn nữa, đặc biệt  phương

pháp .filter() cực kỳ mạnh mẽ  chỗ   thể lấy một hàm làm tham số của nó. Hàm đó cho

phép chúng ta tạo ra những phép kiểm phức tạp để xác định xem một thành phần nào đó 

nên được giữ lại trong tập hợp kết quả trả về. Nói  dụ chúng ta muốn thêm một class cho tất

cả những đường liên kết ngoài. Jquery không  selector nào  thể tiến hành tác vụ này. Nếu

không  hàm trong phương pháp .filter(), chúng ta bắt buộc phải sử dụng vòng lặp để nhảy

qua từng thành phần  kiểm tra  riêng rẽ. Tuy nhiên với những hàm trong phương pháp

.filter() sau, chúng ta vẫn  thể dựa vào vòng lặp ẩn của jQuery  giữ cho code của chúng

ta gọn gàng.

 

$('a').filter(function() {

return this.hostname && this.hostname != location.hostname;

}).addClass('external');

 

Dòng code thứ 2 lọc tập hợp các phần tử <a> với hai tiêu chí sau:

1.Nó phải  thuộc tính href với tên miền (this.hostname). Chúng ta sử dụng phép kiểm này

để loại bỏ những liên kết dạng mailto  những thứ tương tự.

2.Tên miền   liên kết tới (this.hostname) không được giống (!=) với tên miền của trang

hiện tại (location.hostname).

 

Nói chính xác hơn thì phương pháp .filter() lặp qua tập hợp những phần tử phù hợp, kiểm tra

từng giá trị trả về bằng hàm đã tạo. Nếu hàm trả về  false, thì phần tử đó sẽ bị loại khỏi tập

hợp. Còn nếu giá trị trả về  true, thì phần tử đó được giữ lại. Bây giờ chúng ta sẽ xem lại

bảng kiểu kẻ sọc  xem xem  thể làm  với phương pháp di chuyển này.

 

Định dạng từng ô cụ thể

 

  dụ trên chúng ta đã thêm class=’red’ cho những ô  chữa chữ Bruce Willis. Nếu bây

giờ chúng ta cũng muốn định dạng cho ô bên cạnh ô chứa Bruce Willis, chúng ta  thể bắt

đầu với Selector  chúng ta đã tạo,  sau đó chỉ đơn giản nối  với phương pháp .next().

 

$(document).ready(function()     {

$('td:contains(Bruce Wiliss)').next().addClass('red');

});

 

Bảng của bạn sẽ được như sau

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Phương pháp .next() chỉ lựa chọn các phần tử ngay sát cạnh nó. Để  đỏ đậm cho tất cả các ô

đằng sau ô  chưa Bruce Willis, chúng ta  thể sử dụng phương pháp .nextAll().

 

$(document).ready(function()     {

$('td:contains(Bruce Wiliss)').nextAll().addClass('red');

});

 

Bên cạnh phương pháp .next()  .nextAll() chúng ta còn  .prev()  prevAll(). Thêm nữa,

.siblings() chọn tất cả các phần tử  cùng chung một cấp bậc trên DOM,  không cần quan

tâm đến  xuất hiện trước hoặc sau phần từ được chọn.

Để bao gồm cả ô ban đầu (là ô  chữa Bruce Willis)  những ô theo sau nó, chúng ta  thể

thêm phương pháp .andSelf():

 

$(document).ready(function()     {

$('td:contains(Bruce Wiliss)').nextAll().andSelf().addClass('red');

});

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bạn cũng nên biết rằng  vố số những kết hợp của selector  phương pháp di chuyển 

dựa vào đó chúng ta  thể chọn cùng một tập hợp các phần tử.  dụ này sẽ cho bạn thấy

một cách khác để chọn mỗi một ô trong một dòng  ô đó  chưa chữ Bruce Willis:

 

$(document).ready(function() {

$('td:contains(Bruce Willis)').parent().children().addClass('red');

});

 

 đây thay  chúng ta di chuyển theo kiểu ngang hàng, chúng ta di chuyển lên trên một bậc

của cây DOM (

) với phương pháp .parent()  sau đó chọn tất cả các ô của dòng bằng phương pháp

.children().

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Kết hợp (chaining)

 

Phương pháp di chuyển kết hợp như chúng ta vừa khám phá  trên thể hiện khả năng kết hợp

của jQuery. Với jQuery bạn  thể chọn tập hợp các phần tử  thao tác nhiều tác vụ lên

 

chúng, tất cả trên cùng một dòng code. Kiểu kết hợp này không những giữ cho code jQuery

được súc tích  còn tăng khả năng hoạt động của mã. Nhưng để cho dễ đọc hơn, bạn cũng

 thể tách ra thành nhiều hàng.  dụ một dãy kết hợp các phương pháp  thể được viết trên

một dòng như sau:

 

$('td:contains(Bruce

Willis)').parent().find('td:eq(1)').addClass('red').end().find('td:eq(2)').

addClass('red');

 

 hoặc cắt nhỏ ra từng dòng

 

$('td:contains(Bruce Willis)') // Tìm tất cả các dòng  chứa Bruce Willis

.parent() // Di chuyển lên một tầng

.find('td:eq(1)') // Tìm td với thứ tự  1 (dòng thứ 2)

.addClass('red') // Thêm class='red'

.end() // quay về với bố mẹ của ô chứa Henry

.find('td:eq(2)') // Tìm tiếp td với thứ tự  2 (dòng 3)

.addClass('red') // thêm class='red'

 

Tất nhiên cách di chuyển kiểu như trên  lòng vòng đến mức thừa thãi  không  trong

thực tế. Bởi   nhiều cách khác đơn giản hơn, trực tiếp hơn. Tuy nhiên  cũng cho bạn

thấy được sự linh hoạt tuyệt vời  kiểu kết hợp cho phép chúng ta.

Viết code kiểu kết hợp thế này như  nói một tràng trong một hơi không nghỉ.  giúp bạn

đạt mục tiêu nhanh chóng, nhưng lại khó cho người khác hiểu được. Cho nên tách  ra 

thêm comments  thể giúp bạn tiết kiệm thời gian  công sức sau này nếu phải chỉnh sửa

code.

 

Hướng tới các thành phần DOM

 

Mỗi một Selector  hầu hết các phương pháp của jQuery đều trả về một đối tượng jQuery.

Đây chính  điều chúng ta luôn mong đợi, bởi  khả năng tiến hành vòng lặp ẩn  kết hợp

  thể làm. Nhưng cũng  lúc chúng ta muốn hướng tới một phần tử DOM một cách trực

tiếp.  dụ, chúng ta muốn sử dụng một tập hợp các phần tử cho một thư viện JavaScript

khác. Hoặc chúng ta muốn hướng tới tên thẻ của một phần tử,   lại  sẵn như  một

thuộc tính của phần tử DOM. Tuy trường hợp này hiếm khi xảy ra, jQuery  phương pháp

.get(). Để hướng tới thành phần DOM đầu tiên chỉ đến bởi một đối tượng jQuery, chúng ta sẽ

sử dụng .get(0). Nếu phần tử DOM cần phải nằm trong một vòng lặp, chúng ta sẽ sử dụng

.get(index). Như vậy, nếu chúng ta muốn biết tên thẻ của một thành phần với id=’my-

element’, chúng ta sẽ viết code như sau:

 

var myTag = $('#my-element').get(0).tagName;

 

Để tiện dụng hơn nữa, jQuery cung cấp cách viết tắt cho phương pháp .get(). Thay  viết như

dòng code  trên, chúng ta  thể sử dụng cặp ngoặc vuông [] ngay đằng sau selector:

 

var myTag = $('#my-element')[0].tagName;

 

Không phải  ngẫu nhiên   pháp này nhìn giống như  một array của các phân tử

DOM, sử dụng cặp ngoặc vuông như   đi lớp vỏ để tới danh sách các nốt,  bao gồm

luôn cả index (trong trường hợp này  0) cũng giống như lôi từng thành phần DOM ra vậy.

 

Kết luận

 

Với những kỹ năng  chúng ta đã học trong chương này, chúng ta đã  thể định dạng cho

tầng một  tầng phụ của một danh sách sử dụng những CSS Selector  bản, áp dụng những

style khác nhau cho các loại đường liên kết khác nhau sử dụng Attribute Selector,  mầu

khác nhau cho bảng kẻ sọc bằng cách sử dụng jQuery selector như :0dd  :even hoặc

Selector mới của CSS  :nth-child(),  cuối cùng   đậm đỏ cho từng ô trong bảng bằng

cách kết hợp các phương pháp jQuery. Cho đến bây giờ chúng ta sử dụng sự kiện

$(document).ready() để thêm class vào tập hợp các phần tử. Trong chương tới, chúng ta sẽ

khám phá những cách để thêm class vào những sự kiện người dùng tự tạo.

 


Tags