Здається, що більшість цікавих та важливих порад уже згадувались, тому цей лише невелике доповнення.
Маленька порада - це функція jQuery.each (об'єкт, зворотний виклик) . Напевно, всі використовують функцію jQuery.each (зворотний виклик) для ітерації над самим об’єктом jQuery, оскільки це природно. Функція утиліти jQuery.each (об'єкт, зворотний виклик) перебирає об'єкти та масиви. Тривалий час я якось не бачив, що це може бути, крім іншого синтаксису (я не проти написати всі модні петлі), і мені трохи соромно, що я зрозумів його основну силу лише нещодавно.
Вся справа в тому, що оскільки тіло циклу в jQuery.each (об'єкт, зворотний виклик) є функцією , ви отримуєте нову область застосування щоразу в циклі, що особливо зручно, коли ви створюєте закриття в циклі.
Іншими словами, типова поширена помилка - робити щось на кшталт:
var functions = [];
var someArray = [1, 2, 3];
for (var i = 0; i < someArray.length; i++) {
functions.push(function() { alert(someArray[i]) });
}
Тепер, коли ви будете викликати функції в functionsмасиві, ви отримаєте три рази попередження із вмістом, undefinedякий, швидше за все, не є тим, що ви хотіли. Проблема в тому, що існує лише одна змінна i, і всі три закриття посилаються на неї. Коли цикл закінчується, кінцеве значення iдорівнює 3 і someArrary[3]є undefined. Ви можете обійти його, зателефонувавши до іншої функції, яка б створила закриття для вас. Або ви використовуєте утиліту jQuery, яка в основному це зробить для вас:
var functions = [];
var someArray = [1, 2, 3];
$.each(someArray, function(item) {
functions.push(function() { alert(item) });
});
Тепер, коли ви викликаєте функції, ви отримуєте три сповіщення із вмістом 1, 2 та 3, як очікувалося.
Взагалі, це нічого, чого ви не могли б зробити самі, але приємно мати.