ajax加载后jQuery可以重置父高吗?

时间:2013-06-28 17:35:27

标签: javascript jquery

尝试重置父容器的高度时,回调函数运气不佳。

活动:

  1. 用户点击.boxyComments a
  2. .showComments获取load并引入内容。 relative css属性更改了它的高度
  3. .boxy调整其内部元素.articleImageThumb.initialPostLoad及更改后的高度值.showComments
  4. 的高度值

    第3步没有调整大小。使用(window).load包裹仍然不会更改height值,直到整个函数完成后才会更改父.boxy的高度。

    SO FRUSTRATING ....

    以下示例:

    $(".boxyComments a").click(function (event) {
    
            var postHeight = $(this).closest('.boxy').find('.articleImageThumb').height();
            var excHeight = $(this).closest('.boxy').find('.initialPostLoad').height();
            var bComments = $(this).closest(".showComments").height();
    
            event.preventDefault();
            var post_id = $(this).attr("rel");
            $.ajaxSetup({cache:false});
            $(this).closest(".boxyComments").find(".showComments")
            .load("<?php echo get_site_url(); ?>/ajax-fold/",{id: post_id}, function() {
                console.log(excHeight)
                $(document).ready().closest('.boxy').animate({height:  postHeight + excHeight}, 500);
            });
    });
    

    semipseudo输出:

    <div class="boxy">
    
    <div class="articleImageThumb">
    <a href="<?php if(get_post_meta($post->ID, "url", true)) echo get_post_meta($post->ID, "url", true);
        else the_permalink(); ?>" rel="<?php the_ID(); ?>">
        <?php echo get_the_post_thumbnail($page->ID, 'original'); ?>
    </a>
    </div>
    
    <div class="boxyComments">
    <a href="<?php if(get_post_meta($post->ID, "url", true)) echo get_post_meta($post->ID, "url", true); else the_permalink(); ?>" rel="<?php the_ID(); ?>" >Open Comments</a>
    <div class="showComments"></div>
    </div>
    
    </div>
    

    console.log输出仅在height()完成之前提供load()值。

    有没有办法在load之后重置?

2 个答案:

答案 0 :(得分:1)

为什么不打电话:

 excHeight = $(document).ready().closest('.boxy').find('.showComments').height();

加载/加载完成后,最终会得到类似的结果:

.load("<?php echo get_site_url(); ?>/ajax-fold/",{id: post_id}, function() {
        excHeight =  $(document).ready().closest('.boxy').find('.showComments').height();
        console.log(excHeight)
        $(document).ready().closest('.boxy').animate({height:  postHeight + excHeight}, 500);
    });

答案 1 :(得分:0)

你的jquery似乎是错的。

立即关闭,此代码将以null

错误输出
var excHeight = $(this).closest('.boxy').find('.initialPostLoad').height();

.boxy div没有类.initialPostLoad

的孩子

然后,您尝试使用.closest()获取.showcomments的高度。

.closest() 

找到匹配的DOM结构,但你要找的是兄弟。

试试这个

var bComments = $(this).siblings(".showComments").height();