Thứ Sáu, 16 tháng 8, 2013

Những câu hỏi thường gặp (jQuery - Hỏi đáp)

Những câu hỏi thường gặp

Trong quá trình tìm hiểu jQuery chắc chắn có những lúc bạn tự hỏi những câu như : Ký tự $ trong jQuery là gi và tôi có thể thay đổi được nó không? Tại sao lại phải dùng jQuery? jQuery có gì hay hơn javascript...?. Và còn nhiều câu hỏi khác nữa.
Bài chia sẻ ngày hôm nay sẽ tổng hợp những câu hỏi mà tôi nghĩ rằng những người mới làm quen với jQuery sẽ hỏi và những câu hỏi mà có thể bạn sẽ quan tâm.
jQuery là gì?
jQuery là 1 thư viện được viết trên top của javascript, hệ thống lại các hàm của javascript để cho ngắn gọn , dễ nhớ, dễ dùng.
Tại sao dùng jQuery?
Có những lý do sau để dùng jQuery
  • Dễ sử dụng
  • Dễ mở rộng
  • Chạy được trên hầu hết trình duyệt
  • Duyệt DOM thuận tiện hơn dùng javascript thuần
  • Hệ thống các event và callback
  • Viết Ajax đơn gian hơn
  • Tạo hiệu ứng animation tuyệt đẹp
Có nhất thiết phải dùng jQuery?
Không.
Lần đầu dùng jQuery cần những gì?
Ký tự $ trong jQuery là gì?
Là viết tắt của jQuery. Bạn hoàn toàn có thể thay nó bằng bất kỳ ký tự nào.
jQuery(function(cong){
    cong('div').css('border', '1px solid red');
});

hoc

$cong =  jQuery.noConflict();    
$cong('div').css('border', '1px solid red');
Trong 1 trang html có thể có nhiều hàm document.ready() được không?
Bạn có thể gọi hàm document.ready() bao nhiêu lần cũng được.
jQuery.noConflict là cái gì vậy?
Mặc định jQuery và 1 vài thư viện khác dùng $() là biến dùng chung cho toàn bộ thư viện chính vì vậy sẽ xảy ra xung đột giữa các thư viện với nhau.
jQuery.noConflict là để giải quyết vấn đề này
jQuery.noConflict();
jQuery(document).ready(function(){
   jQuery("div").hide();
});
hoặc
$cong =  jQuery.noConflict();    
$cong('div').css('border', '1px solid red');
body onload() khác gì document.ready()?
  • Một trang có nhiều document.ready() nhưng chỉ có 1 onload thôi.
  • document.ready được gọi khi DOM load xong còn onload phải đợi DOM, ảnh, javascript, css... các thứ khác load xong mới được gọi.
CDN là gì?
Là chữ viết tắt của content delivery network tạm hiểu là nơi lưu trữ dữ liệu theo từng vùng. Ví dụ như bạn get file jQuery từ CDN của Googlevề thì hệ thống của google sẽ tính toán được là bạn đang ở đâu và server chứa file jQuery gần bạn nhất sẽ trả về cho bạn nội dung file jQuery mà bạn mong muốn.
Có những CDN jQuery nào phổ biến nhất, và ưu điểm khi dùng CDN?
Có 3 CDN phổ biến nhất đó là
  • Google.
  • Microsoft
  • jQuery
Ưu điểm
  • Tiết kiệm băng thông
  • Load nhanh hơn vì theo địa lý
Load jQuery từ CDN như thế nào?
Từ Google
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Từ Microsoft
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.9.1.min.js"></script>
Từ jQuery
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
Select theo ID và Class cái nào nhanh hơn?
ID nhanh hơn
$(this) là gì?
Là tham chiếu tới phần tử đang thực hiện event
$('#click').click(function(){
    $(this).css('border', '1px solid red');
});
Như ví dụ trên thì $(this) là ý nói tới cái phần tử có ID là click đang thực hiện hành động click (Đoạn này hơi khó hiểu)
Kiểm tra xem 1 phần tử có tồn tại trên trang hay chưa như thế nào?
$(document).ready(function(){
    if ($('#element').length > 0){
       //Element exists
  });
});
Sự khác nhau giữa $('div') và $('<div/>')
$('div') là chọn ra tất cả các thẻ div ở trên DOM
$('<div/>') là tạo ra 1 thẻ div
Sự khác nhau giữa parent và parents?
parent chỉ lấy ra được phần tử cha
parents lấy ra được các phần tử cha, ông, cụ...
//Html
<div id="ong">
        <div id="cha">
            <div id="con"></div>
        </div>
</div>

//Javascript
$('#con').parent() // Lấy được div#cha
$('#con').parents() // Lấy hết cấp trên của nó
$('#con').parents('#ong') // Lấy được div#ong
$('#con').parents('#cha') // Lấy được div#cha
Sự khác nhau giữa event.preventDefault và return false?
event.preventDefault sẽ dừng tất cả các hành động mặc định của 1 element trước khi nó được diễn ra, thường được viết ở trên đầu
return false cũng dừng tất cả các hành động mặc định của 1 element trước khi nó diễn ra nhưng viết ở cuối( Viết ở đầu thì còn làm ăn gì nữa ).
$('#form').on('submit', function(e){
    e.preventDefault() // Dừng sự kiện submit ngay lập tức
    //Làm gì tiếp theo
});

$('#form').on('submit', function(e){
    //Code ở đây

    return false // Dừng sự kiện submit
});
Bài cũng khá dài rồi, bạn nào có câu hỏi gì tiếp vui lòng comment bên dưới tôi sẽ trả lời sớm nhất có thể. Thank you!.

Không có nhận xét nào:

Đăng nhận xét