如果我有代码来拉下一个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); }); });
解决方法
如果它们不被用来克隆原始的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); }); });