我注意到,在监控/尝试回答常见的jQuery问题时,有一些实践使用javascript,而不是jQuery,实际上可以让你写得更少,做得更…同样的量。而且还可能带来性能上的好处。

具体例子

$(this) vs this

在引用已单击对象id的单击事件中

jQuery

$(this).attr("id");

Javascript

this.id;

还有其他类似的常见做法吗?某些Javascript操作可以更容易地完成,而不需要使用jQuery。或者这是一种罕见的情况?(jQuery的“快捷方式”实际上需要更多的代码)

编辑:虽然我很欣赏关于jQuery和纯javascript性能的答案,但实际上我正在寻找更多量化的答案。在使用jQuery时,使用纯javascript而不是使用$()会更好(可读性/紧凑性)的实例。除了我在最初的问题中给出的例子。


当前回答

我发现JS和JQ之间确实有重叠。您所展示的代码就是一个很好的例子。坦率地说,使用JQ而不是JS的最佳理由仅仅是浏览器兼容性。我总是倾向于JQ,即使我能用JS完成一些事情。

其他回答

我发现JS和JQ之间确实有重叠。您所展示的代码就是一个很好的例子。坦率地说,使用JQ而不是JS的最佳理由仅仅是浏览器兼容性。我总是倾向于JQ,即使我能用JS完成一些事情。

如果您最关心的是性能,那么您的主要示例就一针见血了。在我看来,不必要或冗余地调用jQuery是导致性能变慢的第二个主要原因(第一个原因是DOM遍历不好)。

这并不是你真正想要的例子,但我经常看到这样的例子,所以值得一提:加快jQuery脚本性能的最佳方法之一是缓存jQuery对象,和/或使用链接:

// poor
$(this).animate({'opacity':'0'}, function() { $(this).remove(); });

// excellent
var element = $(this);
element.animate({'opacity':'0'}, function() { element.remove(); });

// poor
$('.something').load('url');
$('.something').show();

// excellent
var something = $('#container').children('p.something');
something.load('url').show();

和往常一样,这次聚会我要迟到了。

并不是额外的功能让我决定使用jQuery,尽管它很有吸引力。毕竟,没有什么能阻止您编写自己的函数。

事实上,在修改DOM以避免内存泄漏时,有很多技巧需要学习(我说的是你的IE)。有一个中心资源来为我处理所有这些问题,由比我优秀得多的JS程序员编写,不断地审查,修改和测试,这是上帝的恩赐。

我想这应该属于跨浏览器支持/抽象的观点。

当然,jQuery并不排除在需要时直接使用JS。我总觉得这两者似乎天衣无缝地配合在一起。

当然,如果您的浏览器不支持jQuery,或者您支持低端环境(旧手机?),那么一个大的.js文件可能是一个问题。还记得jQuery曾经很小的时候吗?

但通常情况下,性能差异并不是一个值得关注的问题。只要够快就行。由于每秒钟都要浪费千兆赫的CPU周期,我更关心编码员的性能,这是唯一不会每18个月功率翻一番的开发资源。

也就是说,我目前正在寻找可访问性问题,显然. innerhtml是一个有点不不。jQuery当然依赖于. innerhtml,所以现在我正在寻找一个框架,它将依赖于允许的一些乏味的方法。我可以想象这样的框架会比jQuery运行得慢,但只要它的性能足够好,我就会很高兴。

$(this)与this不同:

通过使用$(this),可以确保jQuery原型被传递到对象上。

这里有一个非技术的答案——许多工作可能不允许某些库,比如jQuery。

事实上,谷歌不允许在他们的任何代码中使用jQuery (React也不允许,因为它属于Facebook),直到面试官说“对不起,你不能使用jQuery,它不在XYZ公司的批准名单上”,你才可能知道这一点。Vanilla JavaScript绝对可以在任何地方、任何时候工作,并且永远不会给你这个问题。如果你依赖于一个库,是的,你得到了速度和轻松,但你失去了通用性。

另外,说到面试,另一个缺点是,如果你在代码测试中说你需要使用一个库来解决一个JavaScript问题,它给人的印象是你实际上并没有理解这个问题,这看起来有点糟糕。然而,如果你用原始的JavaScript来解决它,这表明你实际上理解并可以解决任何摆在你面前的问题。