2013-08-19 134 views
-1

中的选定元素上执行.each可以说,我们有4个标签内没有任何内容,直到他们被点击(延迟加载概念)。过滤AJAX返回的数据并在

当:被点击

TAB1:数据插入到通过AJAX该选项卡。

单击Tab2:通过ajax将数据插入到该选项卡中。

多数民众赞成返回的数据包括:

<ul class="elements"> 
    <li> 
    <div>Stuff</div> 
    <ul class="comments"> 
     ...Initially empty 
    </ul> 
    </li> 
</ul> 

现在,在成功的功能,我调用另一个函数,获得与父UL的李儿童相关的所有评论.elements,这是我遇到麻烦的地方。

所以之后的所有元素都装载到标签中,我有这个功能,需要刮除:

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

“ GetComments'似乎是一个错字或您的问题... – bluetoft

+0

其实它与MyFeed.aspx一起工作,所以不是这样。 – user1447679

+0

你应该真的包括所有的HTML标记。因此,我们可以了解新元素的放置位置,分类和id。 – DevlshOne

回答

0

的commentsHome 变量将不会提供给您的AJAX成功的功能。

但是,可以创建一个隐藏的<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); 
    } 
});