Top 10 # Zoom Là J Xem Nhiều Nhất, Mới Nhất 4/2023 # Top Trend | Tvzoneplus.com

Khái Quát Về Jquery? Jquery Selector Là Gì?

Thư viện jQuery khai thác sức mạnh của các bộ chọn Cascading Style Sheets (CSS) để cho phép chúng ta truy cập nhanh chóng và dễ dàng các phần tử hoặc nhóm phần tử trong Mô hình đối tượng tài liệu (DOM).

1. Khái quát

Các bộ chọn jQuery được sử dụng để tìm hoặc chọn các phần tử HTML dựa trên tên, id, lớp, loại, thuộc tính, giá trị của các thuộc tính và nhiều hơn nữa. Nó dựa trên các bộ chọn CSS hiện có. Ngoài ra, nó có một số bộ chọn tùy chỉnh riêng.

JQuery Selector là một hàm sử dụng các biểu thức để tìm ra các phần tử phù hợp từ DOM dựa trên các tiêu chí đã cho. Đơn giản là bạn có thể nói, các bộ chọn được sử dụng để chọn một hoặc nhiều phần tử HTML bằng jQuery. Khi một phần tử được chọn thì chúng ta có thể thực hiện các hoạt động khác nhau trên phần tử được chọn đó.

2. Tác dụng

JQuery Selector được phát triển trên nền thư viện JavaScript với mục đích viết ngắn gọn và thực hiện được nhiều hơn. Giúp đơn giản hóa nhiều thứ phức tạp trong JavaScript

Dễ dàng sử dụng JavaScript trên trang web mà bạn đang xây dựng, phát triển.

Có rất nhiều chức năng phổ biến mà đòi hỏi cần nhiều dòng code JavaScript để thực hiện và chúng được gói gọn lại trong một method mà bạn có thể gọi đến chỉ trong một dòng code.

Đơn giản hóa rất nhiều thứ phưc tạp trong JavaScript. Ví dụ như việc gọi và thực hiện Ajax

Thư viện jQuery có các tính năng sau đây:

HTML/DOM manipulation:

DOM (Document Object Model) hay Mô hình đối tượng tài liệu là một chuẩn được định nghĩa bởi Tổ chức Web Toàn Cầu (World Wide Web Consortium – W3C).

Mỗi thẻ HTML sẽ có những thuộc tính và phân cấp cha – con với các thẻ HTML khác. Sự phân cấp này gọi là Selector và DOM sẽ có nhiệm vụ xử lý các vấn đề như: đổi thuộc tính của thẻ, đổi cấu trúc HTML của thẻ ,..vv..

JavaScript có thể thay đổi tất cả các phần tử HTML trong trang

JavaScript có thể thay đổi tất cả các thuộc tính HTML trong trang

JavaScript có thể thay đổi tất cả các kiểu CSS trong trang

JavaScript có thể xóa các phần tử và thuộc tính HTML hiện có

JavaScript có thể thêm các thành phần và thuộc tính HTML mới

JavaScript có thể phản ứng với tất cả các sự kiện HTML hiện có trong trang

JavaScript có thể tạo các sự kiện HTML mới trong trang

Các loại DOM trong Javascript:

Effects and animations

AJAX:

Ajax (Asynchronous JavaScript and XML) là một khái niệm được Jesse James Garrett giới thiệu và sử dụng đầu tiền vào tháng 2 năm 2005. Khi sử dụng ajax bạn có thể sử dụng code javascript giao tiếp được với server. Ajax sử dụng đối tượng XMLHttpRequest để giao tiếp, trao đổi thông tin giữa server với client. Đến thời điểm hiện tại thì ajax đã hỗ trên tất cả các trình duyệt

var variableName = new XMLHttpRequest();

2. Cú pháp

Tất cả các bộ chọn trong jQuery bắt đầu bằng dấu đô la và dấu ngoặc đơn: $()

$(selector).action()

$ để xác định / truy cập jQuery.

(selector) để tìm kiếm các phần tử HTML.

action() là hành động được thực hiện trên các phần tử đó.

Ví dụ:

$(this).hide() - ẩn phần tử hiện tại $(p).hide() - ẩn tất cả các thẻ p

3. jQuery Selectors

Đây là phần quan trọng nhất trong thư viện jQuery vì nó cho phép bạn chọn và thao tác trên các phần tử HTML.

jQuery selectors được sử dụng để tìm các phần tử HTML dựa trên name, ID, class, types, attributes, values of attributes, . . . Nó dựa trên các CSS selector hiện có và ngoài ra có một số bộ tùy chỉnh riêng.

The element selector

jQuery element selector lựa chọn các yếu tố dựa vào tên của chúng.

Bạn có thể lựa chọn tất cả các thẻ p trong page bằng cách sau.

$('p')

Ví dụ:

$(document).ready(function(){ $("p").hide(); }); });

Demo

The #id Selector

jQuery id selector sử dụng thuộc tính id của thẻ HTML để tìm thấy những yếu tố cụ thể.

ID nên được gán là duy nhất trong 1 trang web, vì vậy khi sử dụng ID selector nên được sử dụng khi tìm 1 yếu tố cụ thể duy nhất, mang tính độc đáo.

Cú pháp như sau: $('#id')

$(document).ready(function(){ $("#test").hide(); }); });

Demo

The class selector

jQuery class selector tìm kiếm các thuộc tính theo một class cụ thể.

Cú pháp sử dụng để tìm kiếm theo class: $('.class')

$(document).ready(function(){ $(".test").hide(); }); });

4. jQuery trong rails

Đầu tiên khi muốn sử dụng jQuery bạn cần thêm gem “jquery-rails” vào Gemfile, thường sẽ được thêm sẵn khi tạo project mới.

Trong rails khác với các framework dùng để xây dựng web khác, khi viết jQuery vào file chúng tôi hay bất kỳ một file js nào tạo mới, bạn không cần dẫn link vào html bằng cách thông thường sau vì rails đã làm sẵn điều đó.

Tuy nhiên, vì rails có tính năng turbolinks giúp việc load trang trông mượt hơn nên jQuery sẽ chỉ được load vào lần đầu tiên. Do đó, các trang tiếp theo khi turbolinks sẽ không thực hiện jQuery như bình thường, để khắc phục việc này chúng ta có cách khắc phục như sau:

Trong rails 4

$(document).on(page:change, my_function)

Trong rails 5

document.addEventListener("turbolinks:load", function() { })

5. Lời kết

Continue Reading

J2Team Là Gì? Giới Thiệu Về J2Team Và J2Team Community

Lịch sử

Năm 2012, Mạnh Tuấn khi đó đang là Quản trị viên tại diễn đàn GhostClub (một clan nổi tiếng về Ghost Mode trong cộng đồng người chơi game Đột Kích), anh đã cùng Hưng (nickname là James) tạo ra một nhóm lập trình viên, và cái tên J2TEAM ra đời. Một số thành viên khác cũng đang hoạt động trên diễn đàn GhostClub được mời tham gia vào nhóm là Ngọc Chánh (Killer), Cường (K-20), Hiển (Neo) và Hoàng (Hackez).

Năm 2016, nhóm có thêm 2 thành viên mới là Thy (Su) và Thảo (T-Rekt). Thy cũng là thành viên nữ đầu tiên trong J2TEAM.

Tháng 10 năm 2016, J2TEAM Community được tạo ra với mục tiêu trở thành một cộng đồng cho các thành viên yêu mến J2TEAM cũng như Juno_okyo và là độc giả của Juno_okyo’s Blog.

Tháng 3 năm 2018, J2TEAM Community chính thức chạm mốc 100.000 thành viên và trở thành một trong những cộng đồng hoạt động sôi nổi và có tỉ lệ tương tác lớn nhất trên Facebook ở Việt Nam và tiếp tục phát triển mạnh đến nay.

Ý nghĩa về cái tên J2TEAM

Cái tên J2TEAM hàm chứa ý nghĩa là sự kết hợp chữ cái đầu tiên trong nickname của hai người sáng lập đó là Juno_okyo và James.

Hiểu đơn giản thì J2TEAM = Juno_okyo + James + Team. Trong đó hai chữ J kết hợp với nhau được viết thành J2.

Các sản phẩm nổi bật của J2TEAM

Facebook Reply (Chrome Extension)

Facebook Protector (Chrome Extension)

Vào cuối năm 2015, với kinh nghiệm trong việc phân tích mã độc, bảo mật mạng xã hội, các thành viên J2TEAM đã quyết định tạo ra một sản phẩm về bảo mật với tên gọi Facebook Protector để góp phần vào việc chống lại những kẻ xấu muốn tấn công, chiếm đoạt tài khoản của người dùng Việt Nam trên mạng xã hội lớn nhất hành tình.

Ngoài các tính năng chính về bảo mật như chặn các trang web giả mạo, lừa đảo hoặc chứa mã độc thì sản phẩm này còn cung cấp thêm một số tính năng hữu ích khác như chặn trạng thái “đã xem”, “đang trả lời…” khi trò chuyện trên Facebook giúp người dùng nâng cao quyền riêng tư của mình.

Sau khi được giới thiệu trên các trang báo điện tử lớn và uy tín tại Việt Nam như genk, ictnews, pcworld, echip, kenh14,… Facebook Protector nhanh chóng vượt qua mốc 10.000 người dùng rồi tiếp tục tăng trưởng mạnh và đạt tiếp hơn 30.000 người dùng.

Đầu tháng 9 năm 2016, Facebook Protector bị gỡ bỏ khỏi Chrome Store vì gặp vấn đề về bản quyền do sử dụng chữ “Facebook” trong tên gọi.

J2TEAM Security (Chrome Extension)

Tiếp nối thành công đạt được từ Facebook Protector, J2TEAM tiếp tục phát triển sản phẩm khác với tên gọi J2TEAM Security và đưa mọi tính năng từ Facebook Protector sang đồng thời phát triển thêm những tính năng mới.

Với việc người dùng cũ từ Facebook Protector chuyển sang và sự giới thiệu từ các trang báo điện tử, lượng người sử dụng sản phẩm này cũng nhanh chóng vượt qua các mốc 10.000 cho đến 50.000 người sử dụng. Tới tháng 3 năm 2018, số người sử dụng sản phẩm này đã chạm mốc 100.000 người sử dụng và tiếp tục tăng trưởng đều.

J2TEAM Cookies (Chrome Extension)

Awesome AutoIt (Open source project)

PHP Chatfuel Class (Open source project)

Facebook Live Chat – jQuery Plugin (Open source project)

Một plugin jQuery giúp dễ dàng tích hợp Facebook Live Chat vào bất cứ trang web nào chỉ trong vài giây với các thiết lập đơn giản.

Giới thiệu về J2TEAM Community

Là một group Facebook được tạo ra vào ngày 06/10/2016, với việc đi tiên phong trong việc ứng dụng công nghệ tối đa vào quản lý như hệ thống ranking đánh giá và thúc đẩy mức độ hoạt động của thành viên, hệ thống ẩn link để bảo vệ liên kết khi chia sẻ nội dung cũng như tăng tương tác của thành viên với bài viết, áp dụng hashtag cho việc phân loại nội dung,… đồng thời kiểm duyệt nội dung chặt chẽ để bảo đảm chất lượng, J2TEAM Community đã nhanh chóng phát triển thành một trong những group “chất” nhất và đáng để tham gia nhất trên Facebook.

Tham gia với chúng tôi: http://bit.ly/j2team-community

Zoom Quang Học Là Gì? Zoom Số Là Gì? Zoom Quang Và Zoom Số, Zoom Nào Cho Hình Ảnh Rõ Hơn?

Trong lĩnh vực camera quan sát thì Zoom là khả năng phóng to hoặc thu nhỏ hình ảnh mà camera ghi hình lại. Tuy nhiên, khi nói đến zoom thì người ta thường nghĩ đến phóng to hơn là thu nhỏ hình ảnh, khi phóng càng to mà hình ảnh càng rõ thì camera đó có độ pixel càng cao

Zoom quang học (zoom quang) là gì?

Zoom quang học (Optical Zoom) là khi ta điều chỉnh phóng to hoặc thu nhỏ, có sự thay đổi cơ học của ống kính, tiêu cự của camera quan sát, giúp camera nhìn xa hơn bình thường nhưng hình ảnh vẫn rõ nét. Zoom quang học thay đổi hình ảnh dựa trên phần cứng của camera, cho hình ảnh phóng to nhưng độ nét vẫn rất chân thực

Zoom kỹ thuật số (zoom số) là gì?

Digital Zoom). Zoom số học là phóng to hình ảnh trực tiếp trên màn hình điện thoại nhưng không làm thay đổi tiêu cự của camera. Zoom kỹ thuật số thay đổi hình ảnh dựa trên phần mềm bên trong camera, mang lại kết quả ảo, chỉ thay đổi hình ảnh trên màn hình Ngoài zoom quang học, còn có một loại zoom đó là camera quan sát an ninh, không thay đổi ống kính hay lens bên ngoài của camera. zoom số học hay còn gọi là zoom kỹ thuật số (

Trong tương lai có lẽ sẽ có nhiều loại camera quan sát zoom số có độ pixel cao, giúp cho việc phóng to nhưng hình ảnh vẫn rất rõ ràng. Và bước tiến hơn nữa là tích hợp công nghệ AI vào zoom kỹ thuật số, khi phóng to hoặc thu nhỏ, AI sẽ tự điều chỉnh hình ảnh cho rõ nét, tuy nhiên với tính năng này tất nhiên sẽ có độ trễ nhất định

Trong một chiếc camera quan sát có thể chỉ có zoom quang học, hoặc chỉ có zoom số học, hoặc tích hợp cả zoom quang học và zoom số học tùy vào từng loại camera mà nhà sản xuất có ý đồ sử dụng cho mục đích gì

Trong một số trường hợp thì zoom thay đổi ống kính rõ nét hơn zoom trên màn hình camera quan sát an ninh, cho nên camera quan sát có zoom quang học vẫn được đánh giá cao hơn camera quan sát có zoom kỹ thuật số. Điều đó tương đương với việc camera có zoom quang học luôn có giá cao hơn

So sánh zoom quang học và zoom số học

Zoom quang học có thông số bao nhiêu là tốt?

Hiện nay camera quan sát đã có thông số zoom quang học lên đến 50x, giá lên đến hàng trăm triệu đồng, tầm nhìn xa 500m vào ban ngày và 200m vào ban đêm, góc quét lên đến 330 độ. Tất nhiên camera với tính năng khủng như vầy, được xếp vào hàng camera siêu sao có tính năng đặc biệt, với những nhu cầu đặc biệt mới dùng đến.

Thông thường những camera có zoom quang học 5x và zoom số học 8x, đã cho hình ảnh quan sát rất tốt. Ví dụ Camera IP HD 1080P Speed Dome Ngoài Trời SCD2029 của thương hiệu SmartZ có Zoom quang học 5x và Zoom số học 8X

Hướng Dẫn Và Ví Dụ Jquery

1- Download jQuery

jQuery:

jQuery 1.x

jQuery 2.x

Cả hai phiên bản trên đều không có sự khác biệt về API, jQuery 1.x hỗ trợ tất cả các trình duyệt bao gồm cả IE 6,7,8 còn jQuery 2.x cũng hỗ trợ tất cả các trình duyệt trừ IE 6,7,8. Chính vì vậy bạn cần cân nhắc phiên bản để download về. Trong tài liệu hướng dẫn này tôi download phiên bản 1.x:

Bạn có 2 lựa chọn downloadCả hai phiên bản trên đều không có sự khác biệt về API, jQuery 1.x hỗ trợ tất cả các trình duyệt bao gồm cả IE 6,7,8 còn jQuery 2.x cũng hỗ trợ tất cả các trình duyệt trừ IE 6,7,8. Chính vì vậy bạn cần cân nhắc phiên bản để download về. Trong tài liệu hướng dẫn này tôi download phiên bản 1.x:

Kết quả download được:

2- Ví dụ Hello jQuery

Tạo thư mục examples, các ví dụ trong tài liệu này sẽ được đặt trong thư mục này.

Khai báo sử dụng thư viện jQuery:

Khi trang web trong tình trạng sẵn sàng, nghĩa là đối tượng document trong tình trạng sẵn sàng, jQuery sẽ bắt được sự kiện này thông qua phương thức ready.

jQuery(document).ready(function(){ alert('Hello jQuery'); }); $(document).ready(function(){ alert('Hello jQuery'); });

Hãy xem ví dụ đơn giản:

helloJQuery.html

jQuery(document).ready(function(){ alert("Hello jQuery"); });

Chạy ví dụ:

3- jQuery Selector

3.1- jQuery Selector là gì?

Khái niệm về Selector là một trong những khái niệm quan trọng nhất của jQuery.

3.2- Ví dụ với Selector

Ví dụ đầu tiên, lựa chọn tất cả các phần tử div trong tài liệu và sét đặt border cho nó thành “1px solid red”. Ở đây chúng ta sử dụng cú pháp:

jQuery('div') $('div')

selector_tagname.html

div { padding: 5px; margin:5px; width: 100px; } function selectDiv() { $('div').css("border","1px solid red"); }

Chạy thử ví dụ:

Lựa chọn các phần tử theo classname.

Cú pháp

jQuery('.abc') $('.abc')

selector_classname.html

h2, div { padding: 5px; margin:5px; width: 250px; } function selectByClassName() { $('.abc').css("border","1px solid red"); }

Chạy ví dụ:

3.3- Các cú pháp của Selector

Ở phần trên tôi đã giới thiệu một vài ví dụ về Selector, trong phần này tôi sẽ liệt kê ra các cú pháp khác của Selector.

Selector Ví dụ Lựa chọn

* $(“*”) Tất cả các phần tử

#id $(“#lastname”) Phần tử có id=”lastname”

.class $(“.intro”) Tất cả các phần tử có class=”intro”

.class,.class $(“.intro,.demo”) Tất cả các phần tử có class là “intro” hoặc “demo”

element $(“p”)

el1,el2,el3 $(“h1,div,p”)

     

:first $(“p:first”)

:last $(“p:last”)

:even $(“tr:even”)

:odd $(“tr:odd”)

     

:first-child $(“p:first-child”)

:first-of-type $(“p:first-of-type”)

:last-child $(“p:last-child”)

:last-of-type $(“p:last-of-type”)

:nth-child(n) $(“p:nth-child(2)”)

:nth-last-child(n) $(“p:nth-last-child(2)”)

:nth-of-type(n) $(“p:nth-of-type(2)”)

:nth-last-of-type(n) $(“p:nth-last-of-type(2)”)

:only-child $(“p:only-child”)

:only-of-type $(“p:only-of-type”)

     

parent descendant $(“div p”)

element + next $(“div + p”)

element ~ siblings $(“div ~ p”)

     

:eq(index) $(“ul li:eq(3)”) Phần tử thứ 4 trong danh sách (chỉ số bắt đầu từ số 0)

:gt(no) $(“ul li:gt(3)”) Danh sách các phần tử với chỉ số lớn hơn 3

:lt(no) $(“ul li:lt(3)”) Danh sách các phần tử với chỉ số nhỏ hơn 3

:not(selector) $(“input:not(:empty)”)

     

:header $(“:header”)

:animated $(“:animated”) Tất cả các phần tử hoạt hình (animated elements)

:focus $(“:focus”) Tất cả các phần tử đang được chọn (has focus)

:contains(text) $(“:contains(‘Hello’)”) Tất cả các phần tử chứa đoạn text “Hello”

:has(selector) $(“div:has(p)”)

:empty $(“:empty”) Tất cả các phần tử rỗng (empty)

:parent $(“:parent”) Tất cả các phần tử là cha mẹ của phần tử khác.

:hidden $(“p:hidden”)

:visible $(“table:visible”) Tất cả các table có thể nhìn thấy.

:root $(“:root”) Phần tử gốc của tài liệu.

:lang(language) $(“p:lang(de)”)

     

[attribute] $(“[href]”) Tất cả các phần tử với thuộc tính href

[attribute=value] $(“[href=’default.htm’]”) Tất cả các phần tử với thuộc tính href là “default.htm”

[attribute!=value] $(“[href!=’default.htm’]”) Tất cả các phần tử với thuộc tính href khác “default.htm”

[attribute$=value] $(“[href$=’.jpg’]”) Tất cả các phần tử với thuộc tính href có đuôi là “.jpg”

Tất cả các phần tử với thuộc tính title là ‘Tomorrow’, hoặc bắt đầu với ‘Tomorrow’

[attribute^=value] $(“[title^=’Tom’]”) Tất cả các phần tử có thuộc tính title bắt đầu với “Tom”

[attribute~=value] $(“[title~=’hello’]”) Tất cả các phần tử với thuộc tính title chứa “hello”

[attribute*=value] $(“[title*=’hello’]”) Tất cả các phần tử với thuộc tính có chứa từ “hello”

     

:input $(“:input”) Tất cả các phần tử đầu vào (input elements)

:text $(“:text”)

:password $(“:password”)

:radio $(“:radio”)

:checkbox $(“:checkbox”)

:submit $(“:submit”)

:reset $(“:reset”)

:button $(“:button”)

:image $(“:image”)

:file $(“:file”)

:enabled $(“:enabled”)

:disabled $(“:disabled”)

:selected $(“:selected”)

:checked $(“:checked”)

Các quy tắc ở trên là các quy tắc cơ bản, bạn có thể kết hợp chúng lại với nhau.

Các Selector kết hợp:

$(‘.abc’) – Các phần tử có class=’abc’.

$(‘#slider’) – Phần tử có ID là slider

Kết hợp:

Quy tắc:Kết hợp:

Kết hợp:

Quy tắc:Kết hợp:

Xem ví dụ:

selector_firstchildofdiv.html

h2, div , p { padding: 5px; margin:5px; width: 350px; border: 1px solid blue; } function selectAdv() { $('div p:first-child').css("background","#ccc"); }

Chạy ví dụ:

4- jQuery Attribute

Mỗi phần tử trong trang, với jQuery nó sẽ có các thuộc tính, và các phương thức có thể sử dụng.

Ví dụ một phần tử với các thuộc tính (attribute):

jQuery cung cấp cho bạn một số phương thức để lấy ra giá trị thuộc tính hoặc sét đặt giá trị cho thuộc tính.

4.1- Lấy ra giá trị của thuộc tính

Phương thức attr(name) của jQuery cho phép bạn lấy ra giá trị của thuộc tính của phần tử:

attribute_getatt.html

function getAttr() { var hrefValue = $('#atag').attr("href"); $('#atag').html(hrefValue); }

Chạy ví dụ:

4.2- Sét giá trị thuộc tính

Phương thức attr(name, value) sử dụng để sét đặt giá trị cho thuộc tính của phần tử.

attribute_setatt.html

function setAttr() { $('img').attr("src","images/jquery-mobile.png"); }

Chạy ví dụ:

4.3- Sét đặt Style

Phương thức addClass(classes) được sử dụng để áp dụng các style vào các phần tử. Bạn có thể sử dụng nhiều css-class phân cách nhau bởi khoảng trắng.

attribute_applystyle.html

.selected {color: red; } .highlight {background: yellow;} function applyStyle() { $('h1').addClass('selected highlight'); $('h2').addClass('selected'); }

Chạy ví dụ:

4.4- Các phương thức thao tác với thuộc tính

T.T Phương thức & Mô tả Ví dụ

1 attr( properties )

Sét key/value như các thuộc tính cho các phần tử phù hợp.

$(‘#id’).attr(‘href’)

$(‘a’).attr({href:’a.html’, alt:’a’})

2 attr( key, fn )

Sét đặt một giá trị được tính toán vào 1 thuộc tính duy nhất, cho tất cả các phần tử (element) phù hợp.

$(“table”).attr(“border”, function(index) {     return “1px”; })

3 removeAttr( name )

Hủy bỏ một thuộc tính từ các phần tử phù hợp.

$(“table”).removeAttr(“border”);

4 hasClass( class )

Trả về true nếu class chỉ định nằm trên ít nhất một phần tử thuộc tập hợp các phần tử phù hợp.

$(‘h1’).hasClass(‘highlight’)

5 removeClass( class )

Loại bỏ lớp (hoặc nhiều lớp) chỉ định ra khỏi tập hợp các phần tử phù hợp.

$(‘h1’).removeClass(‘highlight’)

6 toggleClass( class )

Thêm lớp (class) chỉ định vào phần tử nếu nó không có, hoặc loại bỏ lớp này nếu nó đã có trên phần tử.

$(‘h1’).toggleClass(‘highlight’)

7 html( )

Trả về nội dung html (innerHTML) của phần tử phù hợp đầu tiên.

$(‘a’).html()

8 html( val )

Sét nội dung html vào tất cả các phần tử phù hợp.

$(‘a’).html(‘Go to new page’)

9 text( )

Lấy nội dung văn bản kết hợp của tất cả các phần tử phù hợp.

$(‘div’).text()

10 text( val )

Sét các nội dung văn bản của tất cả các phần tử phù hợp.

$(‘div’).text(‘Text content’)

11 val( )

Lấy giá trị đầu vào của phần tử trùng khớp đầu tiên.

$(“input”).val();

12 val( val )

$(“input”).val(‘New value’);

5- DOM Traversing

5.1- Traversing là gì?

jQuery traversing, có nghĩa là “di chuyển qua”, nó được sử dụng để tìm kiếm (hoặc lựa chọn) các phần tử HTML dựa trên quan hệ của nó với các phần tử khác. Bắt đầu tại các vị trí (các phần tử) được chọn và di chuyển cho tới khi bắt gặp các phần tử mà bạn mong muốn.

Hãy xem một tài liệu HTML và nó được chuyển thành một cấu trúc DOM (dạng cây).

5.2- jQuery Traversing – Ancestors

Một phần tử tổ tiên (ancestor element) là phần tử cha, ông, v..v.. của một phần tử nào đó.

Với jQuery bạn có thể di chuyển lên (traverse up) các nút cao hơn của cây DOM để tìm kiếm các phần tử ancestors của một phần tử.

jQuery có một vài phương thức cho phép bạn di chuyển lên (traverse up) các nút DOM cao hơn (Ancetors).

parent()

parents()

parentsUntil()

Phương thức parent() trả về phần tử cha trực tiếp của phần tử đang chọn.

Ví dụ tìm tất cả các phần tử cha của phần tử có class=’abc’.

traversing_parent.html

div, ul, li { width: 200px;padding: 5px; margin: 5px; border: 1px solid blue;} .abc {border: 1px solid red;} function highlightParent() { $('.abc').parent().css("background","#ccc"); }

Chạy ví dụ:

5.2.2- parents

traversing_parents.html

div, ul, li { width: 200px;padding: 5px; margin: 5px; border: 1px solid blue;} .abc {border: 1px solid red;} function highlightParents() { $('.abc').parents('div').css("background","#ccc"); }

Chạy ví dụ:

Phương thức parentsUntil() trả về tất cả các phần tử tổ tiên nằm giữa 2 phần tử gồm phần tử đang chọn và phần tử xác định trong tham số.

traversing_parentsUntil.html

div, span, ul, li , h2 {padding: 5px; margin: 5px; border: 1px solid blue;} function highlightParentsUntil() { $('h2').parentsUntil('div').css("border","2px solid red"); } li element

Chạy ví dụ:

5.3- jQuery Traversing – Descendants

Tìm kiếm các phần tử hậu duệ (descendants) của các phần tử đã chọn. Chính là các phần tử con, cháu,…

jQuery cung cấp cho bạn 2 phương thức:

children()

find()

Phương thức này trả về tất cả các phần tử con trực tiếp của phần tử đang chọn.

traversing_children.html

div, span, ul, li , h2 {padding: 5px; margin: 5px; border: 1px solid blue;} function highlightChildren() { $('div').children().css("border","2px solid red"); } ul element

Chạy ví dụ:

Tìm kiếm các phần tử phù hợp trong tập hợp các phần tử hậu duệ của phần tử đang được chọn.

traversing_find.html

div, h2 , ul, li {padding: 5px; margin: 5px; border: 1px solid blue;} function highlightFind() { $('div').find('h2').css("border","2px solid red"); }

Chạy ví dụ:

5.4- jQuery Traversing – Siblings

Tìm kiếm các phần tử anh em, cùng phần tử cha với phần tử hiện tại.

jQuery cung cấp cho bạn một số phương thức tìm kiếm các phần tử anh em (sibling elements).

siblings()

next()

nextAll()

nextUntil()

prev()

prevAll()

prevUntil()

nextUntil(..) & prevUntil(..):

5.4.1- siblings(), next(), prev(), nextAll(), prevAll(), nextUntil(), prevUntil example

Các phương thức:

Phương thức Mô tả Ví dụ

siblings([selector]) Phương thức siblings() trả về tất cả các phần tử anh em của phần tử được chọn. $(‘h2’).siblings()

next([selector]) Phương thức next() trả về phần tử anh em kế tiếp của phần tử được chọn. $(‘h2’).next()

prev([selector]) $(‘h2’).prev()

nextAll([selector]) Phương thức nextAll() trả về tất cả các phần tử anh em kế tiếp của phần tử được chọn. $(‘h2’).nextAll()

prevAll([selector]) Phương thức prevAll() trả về tất cả cac phần tử anh em đứng trước phần tử được chọn. $(‘h2’).prevAll()

nextUntil(selector) Phương thức nextUntil() trả về các phần tử kế tiếp phần tử được chọn, cho tới khi gặp một phần tử phù hợp điều kiện của tham số. $(‘h2’).nextUntil(‘h4.blue’)

prevUntil(selector) Phương thức prevUntil() trả về các phần tử phía trước của phần tử đang được chọn, cho tới khi gặp một phần tử phù hợp điều kiện của tham số. $(‘h2’).prevUntil(‘h1’)

siblings(), next(), prev(), nextAll(), prevAll(), nextUntil(), prevUntil().

traversing_siblings.html

h1, h2, h4, p, div {padding: 5px; margin: 5px; border: 1px solid black;} h2 {border: 2px solid red;} .blue {border: 2px solid blue;} function clearAll() { $('h1, h2, h4, p, div').css("background","white"); } function highlightSiblings() { clearAll(); $('h2').siblings().css("background","yellow"); } function highlightNext() { clearAll(); $('h2').next().css("background","yellow"); } function highlightNextAll() { clearAll(); $('h2').nextAll().css("background","yellow"); } function highlightNextUntil() { clearAll(); $('h2').nextUntil('h4.blue').css("background","yellow"); } function highlightPrev() { clearAll(); $('h2').prev().css("background","yellow"); } function highlightPrevAll() { clearAll(); $('h2').prevAll().css("background","yellow"); } function highlightPrevUntil() { clearAll(); $('h2').prevUntil('h1').css("background","yellow"); }

Chạy ví dụ:

5.5- jQuery Traversing – Filtering

Các phương thức:

Phương thức Mô tả Ví dụ:

eq(index) Phương thức eq() trả về một phần tử ứng với chỉ số trong tham số trong tập các phần tử được chọn. $(‘p’).eq(1)

filter(selector) Phương thức filter() cần bạn chỉ rõ tiêu chí trong tham số. Các phần tử không khớp với tiêu chí sẽ bị loại bỏ khỏi tập hợp đang chọn, và trả về các phần tử phù hợp. $(‘p’).filter(‘.abc’)

filter(fn) Loại bỏ tất cả các phần tử trong tập hợp được chọn mà không phù hợp với hàm được chỉ định (Trong tham số), trả về các phần tử còn lại.  

first() Phương thức first() trả về phần tử đầu tiên trong danh sách được lựa chọn. $(‘p’).first()

has()    

is(selector) Kiểm tra các phần tử đang được lựa chọn có phù hợp với một biểu thức trong tham số không, nếu ít nhất một phần tử phù hợp phương thức trả về true.  

last() Phương thức last() trả về phần tử cuối cùng trong danh sách được lựa chọn. $(‘p’).last()

map(callback) Chuyển tập hợp các phần tử trong một đối tượng jQuery thành một tập hợp mảng (có thể là không chứa phần tử nào).  

not(selector) Phương thức not() trả về tất cả các phần tử không khớp với tiêu chí trong tham số.  

slice(start,[end]) Trả về một tập con của tập hợp đang chọn. $(‘p’).slice(1, 4) $(‘p’).slice(2)

Phương thức eq(index) trả về phần tử có chỉ số xác định trong tham số trong danh sách các phần tử đang được chọn.

Chỉ số được bắt đầu từ 0, như vậy phần tử đầu tiên có chỉ số là 0, chứ không phải 1.

Chỉ số được bắt đầu từ 0, như vậy phần tử đầu tiên có chỉ số là 0, chứ không phải 1.

$("p").eq(1);

Phương thức filter(selector) cần bạn chỉ rõ tiêu chí trong tham số. Các phần tử không khớp với tiêu chí sẽ bị loại bỏ khỏi tập hợp đang chọn, và trả về các phần tử phù hợp.

$("h3").filter(".abc");

Loại bỏ tất cả các phần tử trong tập hợp được chọn mà không phù hợp với hàm được chỉ định (Trong tham số), trả về các phần tử còn lại.

Tham số của hàm:

Ví dụ:

$('h4').filter(function(index, element) { if(index == 1) { return true; } if( $(element).hasClass('highlight') ) { return true; } return false; }).css('color','red');

Xem ví dụ đầy đủ:

traversing_filter_fn.html

div, h2 , ul, li {padding: 5px; margin: 5px; border: 1px solid blue;} function highlightFilter() { $('h4').filter(function(index, element) { if(index == 1) { return true; } if( $(element).hasClass('highlight') ) { return true; } return false; }).css('color','red'); }

Chạy ví dụ:

Phương thức not(selector) trả về tất cả các phần tử đang lựa chọn, và không khớp với tiêu chí trong tham số.

$('p').not('.abc')

Phương thức not(fn) trả về tất cả các phần tử đang lựa chọn mà không khớp với hàm fn.

Tham số của hàm:

Ví dụ:

$('h4').not(function(index, element) { if(index == 1) { return true; } if( $(element).hasClass('highlight') ) { return true; } return false; }).css('color','red');

Xem ví dụ đầy đủ:

traversing_not_fn.html

div, h2 , ul, li {padding: 5px; margin: 5px; border: 1px solid blue;} function highlightNot() { $('h4').not(function(index, element) { if(index == 1) { return true; } if( $(element).hasClass('highlight') ) { return true; } return false; }).css('color','red'); }

Chạy ví dụ:

Ví dụ:

$("div").has("p")

traversing_has.html

p, div {padding: 5px; margin: 5px; border: 1px solid blue; width: 300px;} function highlightHas() { $('div').has("p").css('border','2px solid red'); }

Chạy ví dụ:

6- jQuery Event

Các sự kiện được hỗ trợ trong mô hình DOM:

Kiểu sự kiện Sự kiện Mô tả

MOUSE EVENT

Xẩy ra khi có nhấn kép chuột

mouseenter Xẩy ra khi chuột đi vào vùng hiển thị của phần tử.

mouseleave Xẩy ra khi chuột ra khỏi vùng hiển thị của phần tử.

 

KEYBOARD EVENT keypress Xảy ra khi phím được nhấn và nhả.

keydown Xảy ra khi phím được nhấn.

keyup Xảy ra khi phím được nhả ra.

 

FORM EVENT submit Xảy ra khi form được gửi (submit)

change Xảy ra khi các phần tử (element) thay đổi.

focus Xảy ra khi các yếu phần tử được chọn.

blur Xảy ra khi các yếu phần tử mất lựa chọn.

 

DOCUMENT/WINDOW EVENT load Xảy ra khi tài liệu (document) được tải.

resize Xẩy ra khi window thay đổi kích thước.

scroll Xẩy ra khi window cuộn

unload Xẩy ra khi tài liệu bị hủy bỏ (unloaded).

error Xẩy ra khi có lỗi tải hoặc hủy tải,..(loading or unloading).

6.1- Cách thông dụng để xử lý sự kiện

$(document).ready(function() { $(this).css("background:#ccc"); }); $(this).css("background:yellow"); }); });

event_helloworld.html

h3 {border: 1px solid blue; padding: 5px; width: 200px;} h4 {border: 1px solid red; padding: 5px; width: 200px;} $(document).ready(function() { $(this).css("background","#ccc"); }); $(this).css("background","yellow"); }); });

Chạy ví dụ:

6.2- Sử dụng bind()/unbind()

Bạn có thể sử dụng bind() để gắn một hàm xử lý sự kiện cho các phần tử.

Cú pháp:

selector.bind( eventType[, eventData], handler)

eventData − Đây là tham số không bắt buộc là bản đồ (map) dữ liệu sẽ được chuyển vào cho hàm điều điều khiển sự kiện (event handler).

handler − Là một hàm để thực thi mỗi khi sự kiện xuất hiện.

 

Ví dụ:

$(document).ready(function() { alert('Hi there!'); }); });

Bạn có thể sử dụng unbind() để loại bỏ bộ điều khiển sự kiện (event handler)

Cú pháp:

selector.unbind(eventType, handler) selector.unbind(eventType)

handler − Nếu được cung cấp, nó sẽ chỉ định cụ thể cái sẽ được loại bỏ.

event_bind_unbind.html

h3 {border: 1px solid blue; padding: 5px; width: 300px;} h4 {border: 1px solid red; padding: 5px; width: 300px;} p {border: 1px solid green; padding: 5px; width: 300px;} $(document).ready(function() { $(this).css("background","#ccc"); }); $(this).css("background","yellow"); }); $("h3").css("background", "white"); }); });

Chạy ví dụ:

6.3- Các thuộc tính của Event (Event Attribute)

S.NO. Thuộc tính Mô tả

1 altKey Trả về true nếu phím Alt được nhấn khi sự kiện xẩy ra, ngược lại trả về false. Phím Alt thường được ghi nhãn là Option trên các bàn phím Mac.

2 ctrlKey Trả về true nếu phím Ctrl được nhấn khi sự kiện xẩy ra, ngược lại trả về false.

3 data Giá trị, nếu có, nó sẽ được chuyển vào tham số thứ hai của bind() khi thiết lập hàm xử lý.

4 keyCode Dùng cho sự kiện keyup hoặc keydown, nó trả về mã ký tự đã được nhấn.

5 metaKey Giá trị là true nếu phím Meta được nhấn khi sự kiện xẩy ra, ngược lại là false. Nút Meta chính là Ctrl trên các PC và là nút Command trên Mac.

6 pageX Sử dụng cho các sự kiện chuột, tọa độ vị trí theo chiều ngang mà sự kiện phát ra, tương đối so với trang hiện tại.

7 pageY Sử dụng cho các sự kiện chuột, tọa độ vị trí theo chiều thẳng đứng mà sự kiện phát ra, tính tương đối so với trang hiện tại.

8 relatedTarget Sử dụng cho các sự kiện chuột, xác định trạng thái con trỏ đi ra hay đi vào khi sự kiện phát ra.

9 screenX Sử dụng cho sự kiện chuột, xác định tạo độ theo chiều ngang mà sự kiện phát ra, so với màn hình hiện tại.

10 screenY Sử dụng cho sự kiện chuột, xác định tạo độ theo chiều thẳng đứng mà sự kiện phát ra, so với màn hình hiện tại.

11 shiftKey Giá trị true nếu nút Shift bị nhấn tại thời điểm sự kiện phát ra, ngược lại là false.

12 target Xác định phần tử phát ra sự kiện.

13 timeStamp Thời gian (tính bằng mili giây) khi sự kiện được tạo ra.

14 type

15 which Đối với sự kiện bàn phím, chỉ định mã có kiểu số (numeric code) cho phím gây ra sự kiện, nó là mã của ký tự đã nhấn, đối với sự kiện chuột nó xác định nút nào đã bị nhấn, trái, giữa hay phải (1 là nhấn trái, 2 nhấn nút giữa, 3 nhấn phải).

Xem ví dụ minh họa:

event_attribute.html

div {margin : 10px; width: 250px; height: 150px; float: left; } $(document).ready(function() { ; $('div#log').html(s); }); }); DIV 1 DIV 2

Chạy ví dụ:

6.4- Các phương thức của Event (Event methods)

No. Phương thức Mô tả

1 preventDefault() Ngăn chặn trình duyệt thực hiện các hành động mặc định.

2 isDefaultPrevented() Trả về true nếu đã gọi event.preventDefault().

3 stopPropagation() Ngăn chặn sự lan truyền sự kiện này tới các phần tử cha, các phần tử cha sẽ không nhận biết được sự kiện này, hoặc kích hoạt các sự kiện của nó.

4 isPropagationStopped() Trả về true nếu event.stopPropagation() đã từng được gọi trong sự kiện này.

5 stopImmediatePropagation() Ngăn chặn các phần còn lại của các bộ xử lý đang được thực thi.

6 isImmediatePropagationStopped() Trả về true nếu event.stopImmediatePropagation() đã từng được gọi trong sự kiện này.

Ví dụ khi bạn nhấn chuột phải vào trang web, mặc định một cửa sổ popup hiển thị lên. Bạn có thể sử dụng preventDefault() để ngăn chặn hành động mặc định này của trình duyệt.

$("div").bind('contextmenu', function(event) { if( $(this).attr('id') == "div2") { event.preventDefault(); } }); event.preventDefault(); alert("a element not working!!"); });

Xem ví dụ đầy đủ:

event_preventDefault.html

div {margin : 10px; padding:5px; width: 250px; height: 150px; float: left; } $(document).ready(function() { $("div").bind('contextmenu', function(event) { if( $(this).attr('id') == "div2") { event.preventDefault(); } }); event.preventDefault(); alert("a element not working!!"); }); }); Disable context menu

Chạy ví dụ:

event_stopPropagation.html

div {margin : 20px; padding:5px; float: left; } .outerDiv {background: red; width: 250px; height: 150px; } .innerDiv {background: yellow; width: 250px; height: 100px; } $(document).ready(function() { if( $(this).attr('id') == "stopDiv") { event.stopPropagation(); } }); }); Outer Div Inner Div Outer Div Inner Div (stopPropagation)

Chạy ví dụ: