03/08/2018, 10:09

Selector trong jQuery

Trong bài này chúng ta sẽ tìm hiểu về Selector trong jQuery , đây là bài khá quan trọng và nó là tiền đề để học các bài tiếp theo, vì vậy hãy đọc ...

Trong bài này chúng ta sẽ tìm hiểu về Selector trong jQuery, đây là bài khá quan trọng và nó là tiền đề để học các bài tiếp theo, vì vậy hãy đọc qua nhé các bạn. 

Trước tiên chúng ta tìm hiểu cú pháp của Selector và liên tưởng với cú pháp viết CSS đã nhé.

1. Selector trong jQuery là gì?

Có bao giờ bạn nghe câu nói truy vấn đối tượng HTML bằng jQuery chưa? Đó chính là ý nghĩa chính của Selector trong jQuery đấy, nghĩa là ta sẻ sử dụng cú pháp của Selector để duyệt qua tất cả các thẻ HTML và tìm một thẻ HTML đặc biệt nào đó.

Trong một file HTML sẽ có rất nhiều thẻ HTML và chúng được lồng với nhiều cấp khác nhau, mỗi thẻ sẽ có các thuộc tính (property) và một tên thẻ (tag name). Với số lượng thẻ nhiều như vậy nên việc trùng tên thẻ hoặc trùng tên thuộc tính rất hay xảy ra, vì vậy ta cần một cách nào đó để có thể tìm ra chúng. Với Javascript thì ta có thể sử dụng DOM nhưng trong jQuery thì ta có một cái tên khác đó là Selector.

Để các bạn dễ hiểu thì mình có một ví dụ như sau, giả sử mình có một đoạn mã HTML như bên dưới:

<div id="container">
    <h1 id="title"></h1>
    <p class="description">

    </p>
</div>

Hãy truy vấn đến thẻ h1 có id="title".

Sử dụng Javascript:

var h1 = document.getElementById('title');

Sử dụng jQuery:

var h1 = $('#title');

Như vậy trong jQuery thì ta sử dụng cú pháp của CSS để truy vấn và đây cũng chính là cú pháp của Selector trong jQuery:

var element = $('CSS_SELECTOR');

Ví dụ: Tìm tất cả các thẻ HTML có class="desc".

var elements = $('.desc');

2. Duyệt các kêt quả trả về của Selector

Vấn đề duyệt qua các kết quả của Selector rất quan trọng vì hầu như các bạn sử dụng mà không hiểu nguyên tắc của nó. 

Selector theo ID:

Nếu bạn truy vấn theo ID thì kết quả trả về là một đối tượng HTML, lúc này nêu trong tài liệu HTML tồn tại ID đó thì khi bạn đếm số phần tử (length) thì kết quả trả về 1, ngược lại sẽ trả về 0.

Ví dụ: XEM DEMO

Cho thẻ div#container như sau:

<div id="container"></div>

Lúc này đoạn code sau có kết quả = 1 vì id container tồn tại.

var element = $('#container');
alert(element.length);

Nhưng đoạn code sau có kết quả = 0 vì id id_not_found không tồn tại.

var element = $('#id_not_found');
alert(element.length);

Selector theo Class:

Nếu truy vấn theo class thì kết quả sẽ trả về một mảng các phần tử và mỗi phần tử là một đối tượng HTML, lúc này nếu trong tài liệu HTML không tồn tại class đó thì khi bạn đếm số phần tử (length) thì có kết trả về 0, ngược lại kết quả trả về tổng số thẻ HTML có chứa class đó.

Ví dụ: XEM DEMO

Cho đoạn mã HTML sau:

<div class="container">
    Container1
</div>
<div class="container">
    Container2
</div>
<div class="container">
    Container3
</div>
<div class="container">
    Container4
</div>

Lúc này đoạn code sau sẽ có kết quả là 4 vì ta có bốn phần tử chứa class container.

var element = $('.container');
alert(element.length);

Nếu bạn thực hiện thao tác gán (set) thì nó sẽ có tác dụng cho toàn bộ kết quả, nhưng nếu bạn thực hiện thao tác lấy (get) thì nó chỉ có tác dụng với kết quả đầu tiên, vì vậy trường hợp get ta phải sử dụng vòng lặp để lặp qua từng phần tử trong kết quả trả về.

Ví dụCho đoạn mã HTML sau:

<div class="container">
    Container1
</div>
<div class="container">
    Container2
</div>
<div class="container">
    Container3
</div>
<div class="container">
    Container4
</div>

Gán background màu đỏ cho class container.

XEM DEMO

// Truy vấn đối tượng
var element = $('.container');

// Gán CSS background màu đỏ
$(element).css({
    background : "red"
});

Lấy giá trị chứa trong thẻ có class là container.

XEM DEMO

// Truy vấn đối tượng
var element = $('.container');

// Lấy value
var value = $(element).html();

alert(value);

Chạy demo bạn sẽ thấy nó chỉ lấy giá trị của phần tử đầu tiên bởi vì kết quả nó trả về là một mảng. Lúc này để lấy tất cả các giá trị thì ta phải sử dụng vòng lặp.

XEM DEMO

// Truy vấn đối tượng
var element = $('.container');

// Lấy value
var value = ';

// Dùng vòng lặp
for (var i = 0; i <= element.length; i++){
    value += $(element[i]).text();
}

alert(value);

Các trường hợp khác:

Các trường hợp khác sẽ có cách xử lý theo hai nguyên tắc trên, nghĩa là nếu selector chỉ trả về một phần tử thì giống với selector theo ID và nếu trả về nhiều phần tử thì giống với selector theo Class.

3. Lời kết

Như vậy là mình đã giới thiệu xong khái niệm Selector trong jQuery và một số lưu ý khi sử dụng Selector. Vì bài hơi dài nên nếu trình bày luôn danh sách các Selector thì rất khó theo dõi, vì vậy bài tiếp theo mình sẽ nói về danh sách các Selector.

BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan

:button Selector trong jquery

Button Selector sẽ lựa chọn tất các phần tử button hoặc tất cả các phần tử input có type = button. Một selector khác cũng có chức năng tương tự như $(":button") là $( "button, input[type='button']" ). Chú ý : Bởi vì :button là một Jquery extension và không phải là một phần thiết ...

Hoàng Hải Đăng viết 09:43 ngày 14/08/2018

:disabled Selector trong jquery

Disabled Selector sẽ lựa chọn tất các phần tử đang bị disabled . Cũng giống như những selector giả định khác(những selector bắt đầu bằng ":") bạn nên đặt trước nó một tên thẻ hoặc một selector khác, nếu không nó sẽ được hiểu là bộ chọn toàn bộ("*"), nói các khác $( ":disabled" ) tương đương ...

Hoàng Hải Đăng viết 09:43 ngày 14/08/2018

:eq() Selector trong jquery

Eq() Selector sẽ lựa chọn phần tử html nằm ở vị trí được cung cấp. Các index-related selectors (:eq(), :lt(), :gt(), :even, :odd) sẽ lọc lại kết quả trong tập hợp kết quả mà một selector đứng trước nó trả về. Chúng sẽ làm thu hẹp các kết quả chính xác nhất theo ý của người sử dụng. Ví ...

Trịnh Tiến Mạnh viết 09:42 ngày 14/08/2018

:even Selector trong jquery

Even Selector sẽ lựa chọn phần tử html có chỉ số chẵn bao gồm cả 0. Cụ thể mà nói thì thực chất, Even Selector sẽ lựa chọn phần tử thứ nhất, phần tử thứ 3, phần tử thứ 5 .vv.. Tuy nhiên do chỉ số của các phần tử bắt đầu từ 0 nên chúng sẽ mang các chỉ số chẵn. Chú ý : Bởi vì ...

Bùi Văn Nam viết 09:42 ngày 14/08/2018

:checked Selector trong jquery

Checked Selector sẽ lựa chọn tất các phần tử đã được checked hoặc selected . Checked Selector sẽ hoạt động đối với các checkbox , nút radio và các tùy chọn của thẻ select . Nếu bạn muốn lấy riêng các tùy chọn đã được selected của thẻ select sử dụng :selected selector. ...

Hoàng Hải Đăng viết 09:41 ngày 14/08/2018
0