【问题标题】:how to check for an empty selection [] using jquery?如何使用jquery检查空选择[]?
【发布时间】:2012-03-17 10:30:49
【问题描述】:

我在 Jquery Mobile 中使用它来检查点击的元素是否是链接:

 function findClosestLink(ele) {    
        var self = this;
        while (ele){
            if (ele.nodeName.toLowerCase() == "a"){
                break;
                }
            ele = ele.parentNode;
            }
        return ele;
        }   

它是这样称呼的:

$(document).addEventListener( "click", function( e  ){
        var link = $( findClosestLink(e.target) );
        console.log(link);
        // routine
   });

问题:
点击屏幕时,函数返回一个空数组[]。我正在尝试使用

进行检查
    if (!link) {
       return;
    }

但这不起作用。如何检查 []?

感谢您的帮助!

【问题讨论】:

  • 酷。作品!你能让它回答吗?谢谢!

标签: jquery events jquery-mobile event-handling click


【解决方案1】:

试试

if (link.length == 0) { 
     return;
}

如果没有找到链接,则长度为0。

【讨论】:

    【解决方案2】:

    退货商品是array所以,你必须使用.length属性来检查。

    if (!link.length) {
        // your stuff
    }
    

    【讨论】:

      【解决方案3】:

      改为这样做,它更简洁、更易于阅读和理解:

      $(document).click(function(e) {
        var $target = $(e.target);
        if($target.is("a")) {
           console.log('link');
        } else {
           // not a link
        }
      });
      

      这使用.click()event.target

      【讨论】:

      • 会更简单,但是Jquery Mobile在链接中隐藏了很多元素,所以我需要从点击的元素向上遍历,在Jquery Mobile中通常是span.ui中的span.ui-text -btn-inner 在 a.ui-btn 中。
      • 在 jQuery 1.7+ 中你可以这样做:$(document).on('click', 'a', function(){ .... }); 它只会捕获对“a”标签的点击。
      猜你喜欢
      • 2012-06-17
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      相关资源
      最近更新 更多