【问题标题】:Recalculate height function working once in a while重新计算高度功能偶尔工作
【发布时间】:2013-02-05 14:48:18
【问题描述】:

我在读取 div 高度,然后调整另一个大小的脚本时遇到了一些问题。

基本上它只是偶尔做一次。

在我看来,该函数在实际加载所有元素之前获取 div 的高度。

function recalculate_h() {
    if ($(".content_full").is(":visible")){
           var cur = $(".content_full").height()+100;
             animate_height(cur);

       }
}

function smooth_change(way) {
 // rest of the code
    $("#here").load("index.php?siteno="+next+" #there", function(evt) {

        $("#outer").attr("siteno", next);    
            recalculate_h(); 
    });
}

它在document.ready中被调用

$(".left_navigator").click(function() {
        smooth_change("back");
});

任何想法我可能做错了什么?

附言

有两种导航站点的方式,通过基本的刷新和 GET 属性,以及使用 ajax 请求更流畅。 另外,像这样在每次页面加载时都会调用 recalculate_h,而且效果很好。

$(window).load(function() {

     recalculate_h();
     //$('#map_canvas').gmap();

});

【问题讨论】:

  • 请添加为 jsfiddle,因为我们无法知道“下一个”是什么,或者 jquery 负载是否每次都从服务器返回
  • 您正在加载的页面中有图片吗?
  • 是的,有一些。我的第一个猜测是,这可能是 css 定位的原因......但正如我之前写的,这实际上是有效的。有时它做得对,有时它似乎忘记了一些 div。

标签: jquery css resize load height


【解决方案1】:

您可以尝试使用 jquery ajax 调用来加载 index.php?siteno.... 并调用 recalculate_h(); ajax 的完整事件?

我发现您错误地设置了这些值:

var middle_banner_height = 100;
var middle_banner_width = 802; 

你应该这样设置它们:

var middle_banner_height = "100px";
var middle_banner_width = "802px"; 

另外,在这个调用中你设置了 midle_banner_with 而不是 middle_banner_width,所以你得到 midle_banner_with 没有定义。 无论如何,这可能想要解决整个错误,但是您的脚本在这里中断。

【讨论】:

  • .load 不是.ajax() 的缩写形式吗?而且他已经在完整的功能中调用recalculate_h()..."
  • 哦,是的。没注意到。毕竟我使用了 css 并且完全忘记了索引中的残留物,谢谢。顺便提一句。虽然打错了,但这段代码现在基本上什么都不做。
【解决方案2】:

我之前在我的一个项目中做过同样的场景,我解决它的方法是抓取你想要调整大小的元素并将它的 css 设置为 height: auto。然后添加其余代码。让我知道它是否有效。

【讨论】:

  • 我已经用 css:auto 将所有东西都包裹在一个 div 中,但它并没有太大变化。如果你想看看,这里是实际项目dditorkney.com/beta/index.php btw。如果您使用中间横幅中的箭头进行导航,则崩溃只是时间问题。
  • 由于我已经尝试了很多东西,我最终将 css 高度设置为固定值。这实际上是最糟糕的解决方案,但它现在正在工作。
猜你喜欢
  • 2017-11-12
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 2020-11-10
  • 1970-01-01
相关资源
最近更新 更多