让我们说,在点击之前我没有任何内容的4个标签(延迟加载概念)。
当:
单击Tab1:通过ajax将数据插入该选项卡。
单击Tab2:数据通过ajax插入该选项卡。
等
返回的数据包括:
<ul class="elements">
<li>
<div>Stuff</div>
<ul class="comments">
...Initially empty
</ul>
</li>
</ul>
现在在成功函数中,我正在调用另一个函数来获取与父元素的子元素相关的所有注释,这就是我遇到麻烦的地方。
所以在将所有元素加载到选项卡后,我有这个需要刮刀的功能:
function LoadComments(data) {
$newData = $(data).filter('ul.elements');
$newData.find('ul.comments').each(function() {
var commentsHome = $(this);
$.ajax({
url: '/MyFeed.aspx',
type: 'POST',
dataType: 'html',
data: {
"xfd" : "GetComments',
},
success: function(data) {
commentsHome.html(data);
}
});
});
}
到目前为止,我的变量commentsHome似乎没有起作用。我的目标是仅为新数据的每个返回元素加载注释。因此,当单击Tab2时,仅对单击Tab2后返回的数据执行此功能。
不确定我做错了什么:(
谢谢!
答案 0 :(得分:0)
在AJAX成功函数中,您无法使用commentsHome 变量。
但是,您可以创建一个隐藏的<input type="hidden" id="commentsHome" />
并将值存储在那里,然后在AJAX成功函数中引用它。
function LoadComments(data) {
$newData = $(data).filter('ul.elements');
$newData.find('ul.comments').each(function() {
$('#commentsHome').val($(this));
$.ajax({
url: '/MyFeed.aspx',
type: 'POST',
dataType: 'html',
data: {
"xfd" : "GetComments',
},
success: function(data) {
var commentsHome = $('#commentsHome).val();
commentsHome.html(data);
}
});