【问题标题】:jquery find children selector performancejquery查找子选择器性能
【发布时间】:2011-02-12 20:44:20
【问题描述】:

有没有更好的方法来写这个。我正在检查 textarea 的输入并尝试查找它是否包含对象或 iframe 标签,如果不包含则设置 var x =1

if ($textareaval.find('iframe').length > 0) {
    alert('iframe')
} else if ($textareaval.find('param').length > 0) {
    alert('object')
} else {
    var x = 1;
    alert(x)

【问题讨论】:

    标签: jquery find children


    【解决方案1】:

    我认为即使您不需要检查长度> o.. 这样做..

    if ($textareaval.has('iframe, param').length) {
       alert('iframe, param')
    }else{var x=1;}
    

    【讨论】:

    • 这真的应该是一个评论。
    • 如果 iframe 我想做某些事情,如果 param 我想做其他事情,这不会在不编写额外代码的情况下提供灵活性。我的工作方式,我只是想知道是否有更简单的方法来编写它
    【解决方案2】:

    观察到您只会发出一种警报,因此假设您只会遇到一种类型,我建议如下:

        var foundItems = $textareaval.has('iframe, param');
        var alertVal = 1;
        if(foundItems.length){
           alertVal = "object";
           if(foundItems[0].tagName == "iframe")
              alertVal = "iframe";
        }
        alert(alertVal);
    

    这具有仅一次遍历和最小短路逻辑的优点,利用了两个测试对象的最常见属性。而且,它是可读的。

    注意:foundItems.length 测试不是测试是否存在,因为此属性将始终存在于 javascript 集合中;但是,如果它的计算结果为 0,那就是错误的 - 而任何其他数字都不是。

    【讨论】:

      【解决方案3】:

      如果你不在乎它有哪一个,你可以将这两个检查合二为一:

      if ($textareaval.has('iframe, param').length > 0) {
          x = 1;
      }
      

      编辑:你说你确实在乎,所以不。您的代码很好,无需改进。

      【讨论】:

      • 我需要知道它是 iframe 还是 embed,所以我可以相应地抓取它的 attr。
      猜你喜欢
      • 2011-10-26
      • 2010-11-27
      • 2011-06-23
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      相关资源
      最近更新 更多