0

我发现这段代码可以让我遍历一些 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);

4

2 回答 2

3

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

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

2:$tmp而不仅仅是tmp一个“匈牙利”约定来表示 jQuery 对象。您不需要使用它。

于 2012-11-02T10:11:09.537 回答
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); 
于 2012-11-02T09:58:50.053 回答