我有一些以这种方式动态创建的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')
的结果相同。那么,我怎么设置它呢?
答案 0 :(得分:1)
this
将指向jqXHR对象而不是循环元素。
您可以创建一个闭包:
$('.singleresult_main_search').each(function() {
var $this=$(this);
//.....
});
..并在回调中使用它:
function(data) {
alert($this.find('.linktosight').length);
});
$ .proxy()也可能是Jack Franklin建议的选项