2009-08-02 38 views
0

我的网站因为ajax调用而获取值。之后,我想将结果(字符串)插入到标签中。然而,我想插入结果的方式是(1)它必须有不透明度= 0,然后(2)它将slideDown(),所以整个内容列表使用动画下推,最后(3)改变不透明度= 1.想象一下,这就像是一个Facebook消息列表插入过程使用jQuery在字符串中选择标记

我打算这样做的方式是首先从ajax返回结果字符串到opacity = 0。但是,我不知道如何使用jQuery从字符串中选择标签。我知道jQuery只能从DOM中选择。那么如何做到这一点?有什么建议?

感谢

+0

你是什么意思的'标记'? – 2009-08-02 19:33:14

+0

请发布您的html片段 – pixeline 2009-08-02 19:33:59

+0

好吧,让我们来做这个实验吧。返回变量是str = string。假设价值回报低于 var str =“ aa bb”; 现在我想隐藏#aa,但它不起作用: $(str).find('#aa')。hide(); msgList.html(str + originalHtml); msgList中的结果仍显示“aa” – 2009-08-03 05:05:34

回答

0

隐藏()是一个jQuery的功能,这意味着只能一个jQuery对象,所以你必须先注入DOM中的HTML,然后调用隐藏()的DOM元素上。

$('#msgList').load (url,data,function(html){ 
var $this = $(this); // cache $(this) for performance 
$this.hide().html(html); // inject the html in the DOM 
$('#aa', $this).hide(); // hide #aa 
$this.show(); // reveal the messageList 
}); 
0

以下将使用简单的.get()包装器进行ajax调用。

然后回调函数会将响应加载到jquery对象中并找到您想要的标记。

然后隐藏该标签并将其附加到div容器。

最后它会滑下来。

//do ajax call 
$.get(url, function(html) { 

    //load html into a jQuery object, find the tag by id then hide it 
    var $el = $(html).filter('#someId').hide(); 
    //append element to the dom and slide it down 
    $el.appendTo('#someDiv').slideDown('slow'); 

}); 
0

我会考虑将返回值放在SPAN中。隐藏将容纳它的容器。将SPAN的不透明度设置为0,然后将结果添加到容器并将其放入容器中。一旦完成,向下滑动容器并显示slideDown方法回调结果的动画。

$.ajax({ 
    ... 
    success: function(data) { 
     var container = $('#container').hide(); 
     $('<span />').css('opacity', 0) 
         .html(data.result) 
         .appendTo(container); 
     container.slideDown('normal', function() { 
         $(this).('span:first') 
           .animate({ 'opacity': 1.0 }); 
        }); 
    } 
    ... 
});