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.

Другие вопросы по тегам