--------------- <> -----------------
--- KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
--- Học để đi cùng bà con trên thế giới ---

Tìm kiếm trong Blog

Ngu ngơ học làm web (29) - Vòng lặp và JSON trong jQuery

tiếp theo của: Ngu ngơ học làm web (28) -  Các xử lý cơ bản trong jQuery
-------

Phần 29.       Vòng lặp và JSON trong jQuery


Đây là clip số 12: vòng lặp trong jQuery


Ví dụ, không dùng vòng lặp:

[HTML]

<ul>
                        <li>A</li>
                        <li>B</li>
                        <li>C</li>
                        <li>D</li>
            </ul>

[JavaScript]

$(document).ready(function() {
                                    var arrLi = $('li').text();
                                    alert(arrLi);
                        });

Ví dụ, có dùng vòng lặp:

$(document).ready(function() {
                                    $('li').each(function(){
                                                alert($(this).text());
                                    });
                        });

Mặc định, hàm trong vòng lặp each() không có tham số, tuy nhiên có thể thêm tham số cho nó, ví dụ,

[JavaScript]

$(document).ready(function() {
                                    $('li').each(function(index, element){
                                                alert(index + ' ' + $(element).text());
                                    });
                        });

Trong đó, index là chỉ số lặp, giá trị bắt đầu là 0, element tham chiếu đến từng phần tử của danh sách, vai trò của element và this là như nhau.

Để ngắt vòng lặp, sử dụng lệnh return false;

Ví dụ,

[JavaScript]

$(document).ready(function() {
                                    $('li').each(function(index, element){
                                                if ($(element).text() !== 'C'){
                                                            alert(index + ' ' + $(element).text());
                                                } else {
                                                            return false;
                                                }
                                    });
                        });

Thực ra, jQuery đã trang bị vòng lặp ngầm định trên các đối tượng jQuery, do vậy trong nhiều trường hợp, không nhất thiết phải chạy thêm vòng lặp để xử lý từng phần tử trong đối tượng jQuery (trong trường hợp đối tượng jQuery có nhiều phần tử). Ví dụ,

$(document).ready(function() {
                                    var arrLi = $('li').text();
                                    alert(arrLi);
                        });

Trong trường hợp trên, jQuery sẽ tự duyệt tất cả các phần tử trong đối tượng $(‘li’) và lấy ra phần văn bản, bằng cách sử dụng hàm text().

Chaining method là cách thức gọi liên tiếp các method trên một đối tượng jQuery, ví dụ dòng lệnh $(this).text('ABC').css('color', 'red') .css('text-decoration', 'underline'); dưới đây.

<script>
                        $(document).ready(function() {
                                    $('li').each(function(){
                                                $(this).text('ABC')
                                                .css('color', 'red')
                                                .css('text-decoration', 'underline');
                                    });
                        });
            </script>

Đây là clip số 13: giới thiệu về JSON


JSON (JavaScript Object Notation) là một kiểu dữ liệu trong JavaScript. Kiểu dữ liệu này chủ yếu là dạng text. Về cấu trúc, nó mô tả một thực thể, bằng cách bao những thực thể con bằng thực thể lớn hơn, trong dấu ngoặc nhọn ({ }).

JSON lưu dữ liệu dưới dạng cặp {key:value}.

JSON là một kiểu dữ liệu trung gian, chủ yếu được dùng để trao đổi thông tin giữa các thành phần của một chương trình. (tham khảo https://vi.wikipedia.org/wiki/JavaScript_Object_Notation)

Có thể đọc thêm về JSON tại đây: http://www.json.org/json-vi.html

Ví dụ,

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Document</title>
            <script src="jquery.js"></script>
            <script>
                        $(document).ready(function() {
                                    var employeeJSON = {
                                                "name" : "Nguyễn Văn Tèo",
                                                "age" : "30"
                                    };
                                    $('#result').text(employeeJSON.name + ' ' + employeeJSON.age);
                        });
            </script>
</head>
<body>
            <div id="result"></div>
</body>
</html>

Khai báo đối tượng JSON,

var employeeJSON = {
                                    "name" : "Nguyễn Văn Tèo",
                                    "age"  : "30”
                        };

Ví dụ, khai báo mảng đối tượng JSON,

var employeeJSONList = [{
                                    "name" : "Nguyễn Văn Tèo",
                                    "age"  : "30"
                        },
                        {
                                    "name" : "Nguyễn Văn Tí",
                                    "age"  : "15"  
                        }];

Truy cập đối tượng JSON,

$('#result').text(employeeJSON.name + ' ' + employeeJSON.age);

Truy cập mảng đối tượng JSON,

$(document).ready(function() {
                                    $('#result').text(employeeJSON[0].name + ' ' + employeeJSON[0].age);
                        });

Có thể dùng vòng lặp each() cho mảng đối tượng JSON.

Đọc thêm về vòng lặp $.each() tại đây: http://api.jquery.com/jquery.each/

Cú pháp của vòng lặp $.each():

$.each(array, callback)

Trong đó,

 - array: vòng lặp each() sẽ duyệt qua từng phần tử của mảng này

 - callback: với mỗi phần tử của mảng array sẽ thực thi hàm này

Cú pháp của hàm callback:

Function( Interger indexInArray, Object value)

Trong đó,

- indexInArray: chỉ số của mảng array

- value: giá trị của mảng array tương ứng với chỉ số indexInArray

Ví dụ,

$.each([ 52, 97 ], function( index, value ) {
  alert( index + ": " + value );
});

Kết quả xuất ra là:

0: 52
1: 97

Ví dụ $.each() trên mảng JSON:

$(document).ready(function() {
                                    var employeeJSON = [{
                                                "name" : "Nguyễn Văn Tèo",
                                                "age" : "30"
                                    },
                                    {
                                                "name" : "Nguyễn Văn Tí",
                                                "age" : "40"
                                    }];
                                    var result = '';
                                    $.each(employeeJSON, function(index, value) {
                                                result += value.name + ' ';
                                    });
                                    $('#result').text(result);
                        });

Đây là clip số 14: đổi đối tượng JSON sang chuỗi và ngược lại


Để đổi từ đối tượng JSON sang chuỗi JSON, sử dụng hàm JSON.stringify(objectJSON).

Theo từ điển Cambridge, cái đuôi “ify” trong từ stringify có nghĩa là “used to form verbs meaning to cause an increase in the stated quality; to become”.

Chuỗi JSON không phải là chuỗi thông thường mà nó có dạng:

[{"name":"Nguyễn Văn Tèo","age":"30"},{"name":"Nguyễn Văn Tí","age":"40"}]

Hoặc,

{"name":"Nguyễn Văn Tèo","age":"30"}

Ví dụ,

$(document).ready(function() {
                                    var employeeJSON = [{
                                                "name" : "Nguyễn Văn Tèo",
                                                "age" : "30"
                                    },
                                    {
                                                "name" : "Nguyễn Văn Tí",
                                                "age" : "40"
                                    }];
                                    var result = '';
                                    result = JSON.stringify(employeeJSON[0]);
                                    $('#result').text(result);
                        });


Để đổi từ chuỗi JSON sang đối tượng JSON, sử dụng hàm JSON.parse(stringJSON). Ví dụ,

$(document).ready(function() {
                                    var employeeJSON = [{
                                                "name" : "Nguyễn Văn Tèo",
                                                "age" : "30"
                                    },
                                    {
                                                "name" : "Nguyễn Văn Tí",
                                                "age" : "40"
                                    }];
                                    var result = '';
                                    result = JSON.stringify(employeeJSON);
                                    $('#result').text(result);
                                    console.log(JSON.parse($('#result').text()));
                        });


Xem lướt qua cho biết, phần chuyển từ đối tượng JSON sang một kiểu dữ liệu của .NET. Serialize có nghĩa là chuyển đổi từng phần.
-----------
Cập nhật [4/10/2017][4/10/2016]
-----------

Ngu ngơ học làm web (28) - Các xử lý cơ bản trong jQuery

tiếp theo của: Ngu ngơ học làm web (27) -  Bộ chọn (selector) trong jQuery
-------

Phần 28.       Các xử lý cơ bản trong jQuery


Ở cuối phần trước có nói về dấu nháy đơn (‘ ’) và nháy kép (“ ”) trong JavaScript và jQuery. Dùng dấu nào cũng được.


Thôi chọn dấu nháy đơn vậy, để gõ cho nhanh (không phải giữ phím Shift khi gõ). Tuy nhiên, khi nào học đến JSON thì phải để ý một chút.

Đây là clip số 9: các set-get (thiết lập – lấy) giá trị thuộc tính của element


- text(): lấy hoặc thiết lập phần văn bản của phần tử

Ví dụ, lấy giá trị văn bản

$(‘#btn1’).click(function() {
                        alert($(‘h1’).text());
            });

Ví dụ, gán giá trị văn bản

$(‘#btn1’).click(function() {
                        $(‘h1’).text(‘Đã bấm rồi!’);
            });                   

Để ý: set – có truyền giá trị cho hàm text(‘giá trị’); get – không truyền giá trị cho hàm text();

- html(): lấy hoặc thiết lập nội dung HTML của phần tử

Ví dụ,

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Document</title>
            <script src="jquery.js"></script>
            <script>
                        $(document).ready(function() {
                                    $('#button').click(function() {
                                                var frm = $('form').html();
                                                alert(frm);
                                    });
                        });
            </script>
</head>
<body>
            <form action="#">
                        <label>Họ tên: </label>
                        <input type="text" id="ho-ten"> <br />
                        <label>Mật khẩu: </label>
                        <input type="password"> <br />
                        <label></label>
                        <input type="submit" value="Đăng nhập" id="button">
            </form>
</body>
</html>

Ví dụ,

$(document).ready(function() {
                                    $('#button').click(function() {
                                                var frm = $('form');
                                                frm.html('hi');
                                    });
                        });

- val(): thiết lập hoặc lấy giá trị của trường dữ liệu (của các input)

Ví dụ,

$(document).ready(function() {
                                    $('#button').click(function() {
                                                var hoTen = $('#ho-ten').val();
                                                $('#button').val(hoTen);
                                    });
                        });

Phương thức attr(‘tên thuộc tính’): lấy giá trị của thuộc tính.

Phương thức attr(‘tên thuộc tính’, ‘giá trị’): thiết lập giá trị cho thuộc tính.

Ví dụ,

$(document).ready(function() {
                                    alert($('input').attr('id'));
                                    $('input').attr('id', 'username');
                        });

Phương thức prop(‘tên thuộc tính’): lấy giá trị của thuộc tính.

Phương thức prop(‘tên thuộc tính’, ‘giá trị’): thiết lập giá trị cho thuộc tính.

$(document).ready(function() {
                                    alert($('input').prop('id'));
                                    $('input').prop('id', 'username');
                        });

Đọc thêm để phân biệt prop() và attr().

Ví dụ,

            <script>
                        $(document).ready(function() {
                                    var attr = $('#chk').attr('checked');
                                    var prop = $('#chk').prop('checked');
                                    alert('gia tri cua attr: ' + attr + ' - prop: ' + prop);
                        });
            </script>

[HTML]

            <form action="#">
                        <input type="checkbox" id = "chk" checked="checked">
            </form>

Đây là clip số 10: làm việc với radio và checkbox


Ví dụ về radiobox,

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Document</title>
            <script src="jquery.js"></script>
            <script>
                        $(document).ready(function() {
                                    $('#btnSubmit').click(function(){
                                                var rdChecked = $('input[type="radio"]:checked');
                                                if (rdChecked.length > 0) {
                                                            $('#result').text('checked');
                                                } else {
                                                            $('#result').text('no checked');
                                                }
                                    });
                        });
            </script>
</head>
<body>
            <label>
                        <input type="radio" name="gender" value="1" /> Male
            </label>
            <label>
                        <input type="radio" name="gender" value="0" /> Female
            </label>
            <br />
            <input type="submit" value="Submit" id="btnSubmit" />
            <div id="result">
                       
            </div>
</body>
</html>

Ví dụ về checkbox: kiểm tra xem người dùng đã đánh dấu chọn vào những ngày nào, lấy giá trị và ngày tương ứng.

[jQuery]

<script>
                        $(document).ready(function() {
                                    $('#btnSubmit').click(function() {
                                                var cbChecked = $('input[type="checkbox"]:checked')
                                                var result = '';
                                                cbChecked.each(function() {
                                                            result += $(this).attr('name') + ' - ' + $(this).val() + ' ';
                                                });
                                                $('#result').text(result);
                                    });
                        });
            </script>

 [HTML]

<label><input type="checkbox" value="2" id="cbMon" name="cbMonday" />Mon</label>
            <label><input type="checkbox" value="3" id="cbTue" name="cbTuesday" />Tue</label>
            <label><input type="checkbox" value="4" id="cbWeb" name="cbWednesday" />Wed</label>
            <label><input type="checkbox" value="5" id="cbThu" name="cbThursday" />Thu</label>
            <br />
            <input type="button" value="Submit" id="btnSubmit">
            <div id="result"></div>

Đây là clip số 11: làm việc với select box (hộp chọn)


Ví dụ single select,

[HTML]

<select id="selectSkill">
                        <option>Chọn ngôn ngữ</option>
                        <option value="HTML">HTML</option>
                        <option value="CSS">CSS</option>
                        <option value="JS">JS</option>
                        <option value="PHP">PHP</option>
            </select>
            <input type="button" value="Submit" id="btnSubmit">
            <div id="result"></div>

[JavaScript]

$(document).ready(function() {
                                    $('#btnSubmit').click(function() {
                                                var result = '';
                                                var selected = $('#selectSkill option:selected');
                                                if (selected.length > 0) {
                                                            result = selected.val();
                                                            $('#result').html(result);
                                                }
                                    });
                        });

Ví dụ multiple select,

[HTML]

<select id="selectSkill" multiple>
                        <option>Chọn ngôn ngữ</option>
                        <option value="HTML">HTML</option>
                        <option value="CSS">CSS</option>
                        <option value="JS">JS</option>
                        <option value="PHP">PHP</option>
            </select>
            <input type="button" value="Submit" id="btnSubmit">
            <div id="result"></div>

[JavaScript]

$(document).ready(function() {
                                    $('#btnSubmit').click(function() {
                                                var result = '';
                                                var selected = $('#selectSkill option:selected');
                                                if (selected.length > 0) {
                                                            selected.each(function(){
                                                                        result += $(this).val() + '<br />';
                                                            });
                                                            $('#result').html(result);
                                                }
                                    });

                        });
-----------
Cập nhật [3/10/2017][3/10/2016]
-----------

Ngu ngơ học làm web (27) - Bộ chọn (selector) trong jQuery

tiếp theo của: Ngu ngơ học làm web (26) -  Cơ bản về jQuery
-------

Phần 27.       Bộ chọn (selector) trong jQuery


Hiểu về hoạt động của trình duyệt sẽ giúp việc lập trình được tốt hơn. Vì đang tìm hiểu, nên sẽ  ghi vài suy nghĩ ra đây, sẽ kiểm tra tính chính xác của nó sau.


Hình sau là các thành phần của trình duyệt.



Theo đó,

- Mục đích của trình duyệt là càng nhanh càng tốt hiển thị trang web cho người dùng.

- Vì vậy, thành phần Networking sẽ cố gắng để chuyển nhanh nhất tài nguyên web cho thành phần Rendering engine.

- Rendering engine sẽ thực hiện phân tích mã HTML, CSS, JavaScript nhanh nhất có thể.

- Trình duyệt tiếp tục tải về các tài nguyên khác: hình ảnh, video.

- Vì các xử lý của JavaScript rất đa dạng, có liên quan đến nhiều đối tượng khác nhau, ví dụ: cửa sổ trình duyệt, lưu trữ cục bộ, các phần tử của HTML, CSS, hình ảnh, video, tương tác với người dùng; nên việc kiểm soát được các xử lý của JavaScript là rất quan trọng.

- jQuery là thư viện tiện ích, được viết bằng JavaScript, jQuery giúp lập trình một số việc nhanh hơn.
- Khi lập trình sẽ kết hợp cả JavaScript và jQuery, nên cần phân biệt dòng lệnh nào là của jQuery, dòng lệnh nào là của JavaScript, hay nói cách khác, cần biết “lệnh này ông nào xử lý”, tất nhiên ông biên dịch sau cùng vẫn là JavaScript Interpreter.

- Trình biên dịch JavaScript nằm trong các web browser engine, có nhiều web browser engine đang được dùng hiện nay, ví dụ: IE sử dụng Trident, Firefox sử dụng Gecko, Safari sử dụng WebKit, Chrome và Opera sử dụng Blink. (https://en.wikipedia.org/wiki/Web_browser_engine)

Tiếp tục xem và làm theo các clip về jQuery, do TEDU chia sẻ.

Đây là clip số 4: selector (bộ chọn)


Dùng bộ chọn để lấy và thao tác với các phần tử HTML.

Các loại bộ chọn phổ biến: ID, tag name, class name, attribute, attribute value. Ví dụ:

$('#clickme').click(function() {
                        $(this).css('background-color', 'red');
});

Có thể gán đối tượng trả về của jQuery vào một biến, sau đó thực hiện xử lý trên biến. Ví dụ:      

var button = $('#btn1');
            button.click(function() {
                        $('#btn1').css('background-color','green');
            });

Dùng lệnh console.log(button), rồi vào cửa sổ console của Developer Tools để xem rất nhiều thông tin về đối tượng button do jQuery trả về.

Trong trường hợp có nhiều id trùng tên (trường hợp không bình thường) thì jQuery sẽ trả về ID đầu tiên tìm thấy.

Để kiểm tra jQuery có tìm thấy phần tử theo yêu cầu hay không? Sử dụng thuộc tính length, ví dụ nếu có tìm thấy phần tử button thì: button.length > 0.

<script>
                        $(document).ready(function() {
                                    var button = $('#clickme');
                                    if (button.length > 0) {
                                                alert('found');
                                    } else {
                                                alert ('not found');
                                    }
                        });
            </script>

Trước khi làm thực hành tiếp, xem hai clip sau để hiểu hơn về jQuery.



Cú pháp cơ bản trong jQuery là,

$(selector).action()

Trong đó:

- $ kí hiệu để truy cập thư viện jQuery

- Selector: phần tử HTML

- Action(): hành động thực hiện trên phần tử

$(this): là phần tử hiện hành.

Ví dụ:

Làm một ví dụ đơn giản: xuất ra 3 hàng, người dùng bấm vào hàng nào thì ẩn hàng đó đi.

            <!DOCTYPE html>
            <html lang="en">
            <head>
                        <meta charset="UTF-8">
                        <title>Document</title>
                        <script src="jquery.js"></script>
                        <script>
                                    $(document).ready(function() {

                                                var p = $('p');
                                                // console.log(p);
                                                p.click(function() {
                                                            $(this).hide();
                                                });

                                    });
                        </script>
            </head>
            <body>
                        <p>FA là Forever Alone</p>
                        <p>Hình như không phải</p>
                        <p>Là Forever Awesome mà</p>
            </body>
            </html>

$(this).hide(); // ẩn đi phần tử hiện hành

$(‘p’).hide(); // ẩn đi tất cả các phần tử p của HTML

Cú pháp cơ bản để chọn phần tử HTML là,

$(‘element’) hoặc $(“element”)

Ví dụ:

            <!DOCTYPE html>
            <html lang="en">
            <head>
                        <meta charset="UTF-8">
                        <title>Document</title>
                        <script src="jquery.js"></script>
                        <script>
                                    $(document).ready(function() {

                                                $('#btn-all').click(function(){
                                                            $('p').hide();
                                                });

                                                $('#btn-2').click(function(){
                                                            $('#p2').hide()
                                                });

                                                $('#btn-3').click(function(){
                                                            $('#p3').hide()
                                                });
                                    });
                        </script>
            </head>
            <body>
                        <p>1. FA là Forever Alone</p>
                        <p id="p2">2. Hình như không phải</p>
                        <p id="p3">3. Là Forever Awesome mà</p>
                        <button id="btn-all">Ẩn tất cả</button>
                        <button id="btn-2">Ẩn hàng thứ 2</button>
                        <button id="btn-3">Ẩn hàng thứ 3</button>
            </body>
            </html>

Đây là clip số 5: thao tác với element qua tên thẻ.


Có thể chọn một lần nhiều phần tử. Ví dụ, $('table, div, a').css('background-color', 'red');

Để ý sự khác nhau của:

- $(‘div a’): chọn tất cả các phần tử a nằm trong phần từ div

- $(‘div, a): chọn tất cả các phần tử div và tất cả các phần tử a

Sau khi chọn được các phần tử rồi, dùng vòng lặp để duyệt các phần tử. Ví dụ,

$('table tr').each(function() {
                        $(this).css('background-color', 'red');
            });

Bước đầu coi và làm theo các clip, sau này sẽ phải đọc tài liệu gốc của jQuery để lấy những kiến thức mới: http://learn.jquery.com/about-jquery/

Ví dụ, để tìm hiểu về các selector, vào mục API Documentation, nhập từ khóa selectors vào ô tìm kiếm, trang web sẽ trả về các mục nói về các loại selector cùng với ví dụ.

Đây là clip số 6: thao tác với element qua class.


Để ý sự khác nhau giữa $(‘.class-name1.class-name2’) và $(‘.class-name1 .class-name2’): cái đầu là phần tử gồm hai class, cái sau là phần tử có class cha là class-name1 và class con là class-name2.

Sử dụng phương thức filter và find của jQuery. Filter là lọc phần tử từ một tập các phần tử theo điều kiện. Find là tìm các phần tử con theo điều kiện.

Đây là clip số 7: thao tác với element qua thuộc tính


Để chọn phần tử theo thuộc tính, sử dụng dấu [], ví dụ:

$('[title]').addClass('my-border');

hoặc $('div[title]').addClass('my-border');     

hoặc $('[title = “h1”]').addClass('my-border');

Cách sử dụng thuộc tính data- của HTML5, ví dụ:

            <!DOCTYPE html>
            <html lang="en">
            <head>
                        <meta charset="UTF-8">
                        <title>Document</title>
                        <script src="jquery.js"></script>
                        <script>
                                    $(document).ready(function() {
                                                alert($('[title = "p1"]').data('id'));
                                    });
                        </script>
            </head>
            <body>
                        <p title="p1" data-id="1">1. FA là Forever Alone</p>
                        <p id="p2">2. Hình như không phải</p>
                        <p id="p3">3. Là Forever Awesome mà</p>
                        <button id="btn-all">Ẩn tất cả</button>
                        <button id="btn-2">Ẩn hàng thứ 2</button>
                        <button id="btn-3">Ẩn hàng thứ 3</button>
            </body>
            </html>

Đây là clip số 8: các toán tử so sánh khi truy cập giá trị thuộc tính


- $('[title = “h1”]').addClass('my-border'): so sánh bằng

- $('[title != “h1”]').addClass('my-border'): so sánh khác

- $("[title $= '1']").addClass('my-border'): giá trị title có kí tự kết thúc là 1

- $("[title ^= 'd']").addClass('my-border'): giá trị title có kí tự bắt đầu là d

- $("[title *= 'iv']").addClass('my-border'): giá trị title có chứa chuỗi iv

Tuy nhiên, áp dụng các toán tử so sánh theo cách liệt ở trên sẽ có một số vấn đề, ví dụ:

            <!DOCTYPE html>
            <html lang="en">
            <head>
                        <meta charset="UTF-8">
                        <title>Document</title>
                        <script src="jquery.js"></script>
                        <script>
                                    $(document).ready(function() {
                                                $('[title != "p1"]').css('color','red');
                                                console.log($('[title != "p1"]'));
                                    });
                        </script>
            </head>
            <body>
                        <p title="p1" data-id="1">1. FA là Forever Alone</p>
                        <p id="p2">2. Hình như không phải</p>
                        <p id="p3">3. Là Forever Awesome mà</p>
                        <button id="btn-all">Ẩn tất cả</button>
                        <button id="btn-2">Ẩn hàng thứ 2</button>
                        <button id="btn-3">Ẩn hàng thứ 3</button>
            </body>
            </html>

Mục đích của đoạn mã trên là cho dòng chữ “1. FA là Forever Alone” có màu đỏ, nhưng kết quả lại là tất cả đều màu đỏ, quan sát cửa sổ console của trình duyệt để xem kết quả, sẽ rút ra được cái lỗi gặp phải. Có thể viết lại một chút để xem kết quả khác:

Thay dòng mã:

$('[title != "p1"]').css('color','red');

Bằng:

            $('p[title != "p1"]').css('color','red');

Để ý là, dù đánh dấu nháy đơn, hay nháy kép thì jQuery và JavaScript nó vẫn chạy. jQuery và JavaScript có vẻ dễ tính!!??...làm người lập trình khó xử, không biết chọn cái nào!


[2/10/2017] tôi đã chọn dấu nháy đơn khi lập trình với JavaScript và jQuery. 
-----------
Cập nhật [2/10/2017][2/10/2016]
-----------