13

我有 7 个不同的按钮,它们在点击时都执行相同的 javascript 功能。我应该使用类选择器还是 id 选择器。

$("input.printing").on("click", function(event) {
     printPdf(event);
});

或者

   $("#package1Pdf").click(function(event) {
         printPdf(event);
   });
$("#package2Pdf").click(function(event) {
         printPdf(event);
   });
$("#package3Pdf").click(function(event) {
         printPdf(event);
   });
$("#package4Pdf").click(function(event) {
         printPdf(event);
   });

各自的优点和缺点是什么?哪个更优选。

4

5 回答 5

13

您可以使用没有多个选择器的 ID 过滤器:

$('[id^="package"]').click(printPdf);

以上将选择所有以“package”开头的id。这意味着差异主要是语义上的。您应该选择对您的应用程序及其开发方式最有意义的内容。

请参阅jQuery 属性选择器页面以了解 jQuery 选择的灵活性。在此页面上保留一个书签将防止您再次编写类似于第二个示例的代码。

哪个更好?

如果您设置了结构,以便您拥有一个在逻辑上正确定义适当元素集的类,那么您应该使用它来选择。

同样,如果您给元素指定了特别命名的 ID,并且没有附加描述性类名称来表示您要选择的内容,则使用 ID 选择。几乎所有应用程序都不会考虑性能差异,包括您的应用程序。

于 2013-03-13T18:54:00.410 回答
3

显然,您使用类的第一个代码更干净、更整洁、更好。

ID 选择器是最快的,这是真的.. 但在这个时代,这并不重要。

所以不要太在意性能(除非它是一个问题),只需使用干净且可维护的那个。

哦,顺便说一句,你甚至不需要那个匿名函数。见下文,

$("input.printing").on("click", printPdf);
于 2013-03-13T19:03:45.190 回答
2

我们都知道 id 选择器更快更好.. 但在你的情况下.. 因为你选择每个 id 8 次.. 与类选择器相比更慢,你可以在这里看到

在您的情况下,类选择器更好,更快,更具可读性......

注意:如果你必须在不久的将来再添加 20 个按钮(100 个太多了)......并且你选择使用 id 选择器...... phewwww !也就是说,还有 20 个事件处理程序...... ;) ;)

于 2013-03-13T19:09:16.427 回答
1

正如大多数人所说,您使用的选择器可能会对性能产生影响,但它通常可以忽略不计,更多的是样式和可读性问题。最重要的是,jQuery 将为每个被选择的元素创建一个唯一的处理程序,可以通过 id 单独选择,也可以使用类或属性选择器等多选方法。就个人而言,我喜欢您的第一个示例,因为它将涵盖您视图的未来添加,而无需记住添加另一个处理程序。

于 2013-03-13T19:04:39.563 回答
1

通常,仅按 Id 选择比按类选择要快,因为 jQuery 在后台使用 getElementById,这在大多数浏览器中更快。请参阅这篇文章以获取更多信息,因为它展示了许多其他提高与 Jquery 相关的性能的方法。但是,请记住选择器性能并不是您唯一需要关心的事情。附加到许多不必要的事件也可能会产生性能问题。为了缓解这个问题,您可以使用委托,请参阅此 jQuery文档以获取有关委托的更多信息。

于 2013-03-13T19:08:49.360 回答