Jquery find + length / size返回0

时间:2011-07-01 09:31:20

标签: javascript jquery css href

我有一些以这种方式动态创建的div:

 //here goes some loop, and everything works fine
 $("#result_main_search").append('<div class="singleresult_main_search">
 <a href="http://somesite.com/" class="linktosight">'
  + SightsList[i]+ '</a>  –  ' + 
'<img src="/images/balloon.gif" rel="'+ i 
 +'" class="balloon_img_main_search" /></div>');    

在循环之后,我尝试为每个链接设置href属性:

$('.singleresult_main_search').each(function() {
  $.get("_ajax_get_sight_link.php", {'id':$("img", this).attr('rel')}, 
   function(data) { 
     alert($(this).find('.linktosight').length);
     $(this).find('a').attr('href', data);    
     alert(data);
   });
})

_ajax_get_sight_data.php接受id,返回链接(警报(数据)工作正常)。 但是警告告诉我们当前div中的.linktosight元素的数量总是给出0(总是说我的意思是每次它找到我生成的div之一)。我尝试.size()$(this).find('a')的结果相同。那么,我怎么设置它呢?

1 个答案:

答案 0 :(得分:1)

回调中的

this将指向jqXHR对象而不是循环元素。

您可以创建一个闭包:

$('.singleresult_main_search').each(function() {
var $this=$(this);
//.....
});

..并在回调中使用它:

function(data) { 
     alert($this.find('.linktosight').length);
   });

$ .proxy()也可能是Jack Franklin建议的选项