Ок седлать ковбоев, потому что это будет длинный. Я проводил утро, проходя через некоторые из моих старых кодов, и мне не интересно узнать о лучших практиках и оптимизации. Чтобы не дойти до субъективной полосы, я просто отправлю несколько примеров, с которыми, надеюсь, легко ответить на вопросы. Я попытаюсь привести примеры очень просто для облегчения ответа и уменьшить вероятность ошибок. Здесь мы идем:
1) Назначение vs jQuery Calls
Я понимаю, что при доступе к селекторам, как правило, лучше назначать селектор переменной, а не делать один и тот же вызов более одного раза - ex.
$('div#apples').hide();
$('div#apples').show();
против.
var oranges = $('div#oranges');
oranges.show();
oranges.hide();
Используется ли это же правило при ссылке на jQuery $(this)? Ex. Простой бит script, чтобы сделать некоторые данные в таблице доступными для кликов и настроить ссылку.
$('tr td').each( function() {
var colNum = $(this).index();
var rowNum = $(this).parent().index();
$(this).wrap('<a href="example.com/hello.html?column=' + colNum + '&row=' + rowNum +'">');
})
против.
$('tr td').each( function() {
var self = $(this);
var colNum = self.index()
var rowNum = self.parent().index()
self.wrap('<a href="example.com/hello.html?column=' + colNum + '&row=' + rowNum +'">');
});
2) this vs $(this)
Хорошо, так что это следующий вопрос, о котором я давно задумывался, но я не могу найти никакой информации об этом. Пожалуйста, извините мое невежество. Когда имеет смысл называть ваниль js this в отличие от обернутого jQuery $(this)? Это мое понимание, которое -
$('button').click(function() {
alert('Button clicked: ' + $(this).attr('id'));
});
Менее эффективен, чем доступ к атрибуту DOM объекта vanilla this, как показано ниже:
$('button').click(function() {
alert('Button clicked: ' + this.id);
});
Я понимаю, что там происходит, я просто задаюсь вопросом, следует ли придерживаться правила, когда вы решаете, что использовать.
3) Лучше ли более определенно?
Это довольно просто, ВСЕГДА полезно быть более конкретным с нашими селекторами? Легко видеть, что $('.rowStripeClass') будет намного медленнее, чем $('#tableDiv.rowStripeClass'), но где мы рисуем линию? Является ли $('body div#tableDiv table tbody tr.rowStripeClass') еще быстрее? Любой вход будет оценен!
Если вы сделали это так, спасибо, что посмотрели! Если вы этого не сделали,: p