Есть ли дополнительные $(...) звонки плохо?
Если у меня есть код, который вытаскивает объект jQuery, а затем выполняет некоторые дополнительные вызовы
$("a.postSyncLink").click(function () {
var resultsTarget = $("span", $(link).parent().next());
resultsTarget.html("<img style='position: absolute;' src='" + waitImgUrl + "'/><span>Sync in progress</span>");
$.get($(this).attr("data-url"), function (returnVal) {
resultsTarget.text(returnVal);
});
});
Является ли это вредной практикой впоследствии (и излишне) переносить этот объект в функцию jQuery? Может ли jQuery оптимизировать лишние вызовы, подобные этому?
$("a.postSyncLink").click(function () {
var resultsTarget = $("span", $(link).parent().next());
$(resultsTarget).html("<img style='position: absolute;' src='" + waitImgUrl + "'/><span>Sync in progress</span>");
$.get($(this).attr("data-url"), function (returnVal) {
$(resultsTarget).text(returnVal);
});
});
Ответы
Ответ 1
Если они не используются для клонирования исходного объекта jQuery, то да, это плохо:
http://api.jquery.com/jQuery/#cloning-jquery-objects
Объект jQuery, переданный в jQuery
, клонируется, это процессорное время, которое я бы не терял.
При сохранении ссылки на объект jQuery я считаю полезным прикрепить имя переменной к $
, это помогает мне помнить, что это объект jQuery и не нуждается в повторной упаковке:
$("a.postSyncLink").click(function () {
var $resultsTarget = $("span", $(link).parent().next());
$resultsTarget.html("<img style='position: absolute;' src='" + waitImgUrl + "'/><span>Sync in progress</span>");
$.get($(this).attr("data-url"), function (returnVal) {
$resultsTarget.text(returnVal);
});
});
Ответ 2
Это вредит производительности, так как вы создаете новые объекты jquery каждый раз, когда вы это делаете.
Избегайте, когда это возможно.
Просто создайте объект jquery и используйте его.