JQuery Плохие практики
Какие плохие / худшие практики JQuery вы видели, написали или чего следует избегать?
4 ответа
Вам следует избегать использования "простых в использовании" селекторов в каждой строке, потому что реализация селекторов в JavaScript не так эффективна. Конечно, ребята из jQUery оптимизируют его, но я думаю, что вы должны использовать его как можно меньше.
Так что это плохая практика.
$("li ul span").show();
$("li ul span").toggleClass("bubu");
Цепочка это хорошо
$("li ul span").show().toggleClass("bubu");
И запоминание вещей в локальной переменной тоже неплохо:
var allspans = $("li ul span");
allspans.show();
allspans.toggleClass("bubu");
Есть два, которые я вижу много:
Во-первых, в событии клика, id
Доступ к нему осуществляется следующим образом:
$("a").click(function(e){
var id = $(this).attr('id');
});
Это создает новый объект jQuery вокруг узла DOM и вызывает функцию. Вот правильный путь:
$("a").click(function(e){
var id = this.id;
});
Примечание: что вы также увидите $(this).attr('href')
, но это правильно из-за того, как jQuery нормализует его в разных браузерах.
Второй передает все, кроме узла DOM в scope
параметр вызова jQuery:
$(".child", $(".parent")).doSomething();
// or
$(".child", ".parent").doSomething();
Делая это, вы не получаете никакого увеличения скорости. Вы видите увеличение скорости, когда у вас уже есть элемент DOM:
$('div').click(function(){
$('img', this).doSomething(); // This is good
});
Джеймс Падолси написал отличную статью о запахах кода jQuery. Я рекомендую прочитать это.
Все еще используя старую функцию готовности документа:
$("document").ready(function(){ });
Вместо очень распространенного:
$(function(){ });
Это не так уж плохо, но я показываю, что люди не встают с новыми API.