Jquery响应find()失败?

时间:2012-11-02 09:56:40

标签: javascript jquery find

我发现这段代码让我遍历一些xml元素:

$(somexml).find('company[id="'+id+'"] customers customer').each(function()
{
     var $tmp = $(this);
     alert($tmp.attr('customerid'));
});

似乎工作得很好。但由于我是Javascript / Jquery的新手我有一些问题:

  1. 我如何回应find()失败...没有匹配?

  2. 为什么tmp之前的'$'?为什么不只是 var tmp = $(this);

2 个答案:

答案 0 :(得分:3)

1:each返回被调用的对象,即$(x).each返回$(x)。因此,将每个结果分配给变量并检查其长度:

var obj = $(somexml).find(whatever).each(function() {
    ...
});
if(!obj.length)
     nothing has been found...

2:$tmp而不仅仅是tmp"hungarian"约定来表示jQuery对象。您无需使用它。

答案 1 :(得分:1)

我如何回应find()失败...没有匹配?

  

将结果分配给某个变量

result = $(somexml).find('company[id="'+id+'"] customers customer');

if(result.length > 0)
{
   result.each(function()
   {
       var $tmp = $(this);
       alert($tmp.attr('customerid'));
   });    
}    
else
{
   alert("No results");
}
  

为什么tmp之前的'$'?为什么不只是var tmp = $(this);

You do not need to use $ before tmp. using $ 

var tmp = $(this);