javascript - jquery - 通过 AJAX 成功设置动态元素高度

标签 javascript jquery ajax

我有一个折叠列表。 在 Ajax 成功时,列表自动展开。

我正在尝试获取扩展列表的高度......但失败了。

Ajax 动态添加元素到列表,因此高度会改变。

这里是剥离代码:

$('form').submit(function() {

   $.ajax({  
        type: "POST",  
        url: "ajax/ajax.php",  
        data: {data:JSON.stringify(data)},  
        dataType: "json",
        success: function(x) {  

            $('#slider' + x.id).children('ul,li').slideDown("slow");

            //this does not return expected height (outerHeight() also tried)
            var t = $('#slider_' + x.id).height();
         } 
    });  

    return false;
});

最佳答案

我假设 slideDown 动画需要时间,并且当您尝试获取它已经改变的高度时。

您可以为动画使用回调,并在动画结束后获取高度:

$('#slider' + x.id).children('ul,li').slideDown("slow", function() 
  {
   //this executes AFTER the animation is complete.
    var t = $('#slider_' + x.id).height();
  }

关于javascript - jquery - 通过 AJAX 成功设置动态元素高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276396/

相关文章:

javascript - 如何使用名称属性克隆新的字段组并增加名称属性

javascript - jQuery AJAX POST 发送变量

javascript - 禁用提交按钮,直到字段在数据库上得到验证

javascript - 使用reflux时如何在javascript控制台中访问lodash

javascript - AngularJS 思考 - 在 AJAX 请求中修改 DOM 的正确方法是什么?

javascript - 我遇到 Angularjs $invalid 问题

javascript - 将值从 RouterStateSnapshot 传递到 Angular 2 应用程序中的根路由文件

javascript - 使用单击事件超链接表行

javascript - Select2 选项 templateResult 未被调用

ajax - 如何将请求头设置为 jqGrid 的 ajax 对象