【问题标题】:jQuery and .length>0jQuery 和 .length>0
【发布时间】:2011-04-01 13:42:22
【问题描述】:
var sd = jQuery(".bla");
if (sd.length>0){

}

有没有更酷的方法来编写该代码?我想要一些代码仅在有一些名为bla 的类时才执行。我知道我可以使用 each,但我不想这样做,而且我知道我可以做 sd.action() 之类的事情,但我不想这样做。

【问题讨论】:

  • 您可以删除>0 部分。
  • .length 非常酷。简约之美 :)
  • $ 而不是 jQuery 更酷。
  • 正确分离令牌更酷:if ( sd.length > 0 ) {
  • @Šime Vidas 为什么 $ 更酷?因为它不会在任何地方都有效?不便携对你来说更酷?我更喜欢可移植的代码。

标签: jquery coding-style


【解决方案1】:

我不确定这有多“酷”,但只是:

if ($('.bla').length) {
    // Do stuff
}

会成功的。

编辑:如果检查后需要重新使用选择器,仍然可以使用相同的语法:

var sd = $(".bla");

if (sd.length) {
    // Do stuff
}

【讨论】:

  • 如果我想稍后对查询返回的对象做一些事情,比它慢。​​
【解决方案2】:

如果你不想使用长度等,让代码看起来更“酷”。

jQuery.fn.extend({
    exists: function() {
      return this.length !== 0;
    }
});

if (jQuery(".bla").exists()) {
  console.log('found');
}

【讨论】:

  • 为什么不用> 0,节省两个字节。
【解决方案3】:

老实说,这是一种完全可以接受且快速的方法(无函数调用)来做你想做的事。我一直在做类似的事情。即使使用$().each 也会稍微慢一些,因为它需要一个函数调用,即使它实际上不会任何事情。

关于这里的另一个答案,这也是正确的:多次执行$('.bla') 也会更慢。如果您认为以后可能会使用$('.bla'),最好将其存储在您的代码中的变量中。这避免了另一个 jQuery 调用,并让浏览器负责垃圾收集。

希望这是有道理的! :)

【讨论】:

  • 这是真的 - 如果您要在脚本的其他部分重用选择器,那么将其分配给变量肯定会更高效。
【解决方案4】:

(在我看来)打造这种外观的“最酷”方式是

if ( $('.bla').length > 0 ) {
    // ...
}

【讨论】:

  • 如果我想稍后对查询返回的对象做一些事情,比它慢。​​
【解决方案5】:

你可以使用 .size()

$(".blah").size() > 0

http://api.jquery.com/size/

【讨论】:

  • 从该页面引用:“.length 属性是首选”
【解决方案6】:

没有。

我认为没有什么更酷的了。 (所以不会让我只回答“否”的问题)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2012-06-13
    • 2011-03-28
    • 2021-07-29
    相关资源
    最近更新 更多