2014-05-08 153 views
0

我的resizeAreas函数不会在$(document).ready函数中触发。这是应用程序的link。我也试过$(document).load但结果相同。jquery函数不会触发

此问题并不一致。但大部分时间页面加载不正确。如果任务列表具有相同的高度,并且在行上具有4个相同(作为高度)列表,则它们被正确加载,否则它们不是。为了确保你看到了它的外观,你可以将一个任务元素从一个列表移动到另一个列表。我没有发布图片的声望。

这里是最的JavaScript代码:

function makeDropArea() { 
    var widthArea = $(".taskListing").width()/2 - 55; 
    var heightArea = $(".taskListing").height(); 

    $('.dropArea').width(widthArea); 
    $('.dropArea').css('margin-left', 5 + 'px'); 
    $('.generalInfo').css('margin-left', 5 + 'px'); 
    $('.generalInfo').css('width', widthArea * 2 + 220 - 45); 
    $('.subTaskHeader').css('width', widthArea + 25); 
} 

function makeDropElement(){ 
    var widthEl = $('.dropArea').width() + 25 ; 
    $('.task').width(widthEl); 
} 

function taskListingSize(){ 

    var width = getWidth(); 
    var height = getHeight() * 80/100; 
    $('.taskListing').css('width', width); 
} 


function resizeAreas() { 
    $('.taskListing').each(function(){ 

    var highestBox = 0; 
    $('.dropArea', this).each(function(){ 

     if($(this).height() > highestBox) 
     highestBox = $(this).height(); 
    }); 

    $('.dropArea',this).css('min-height', highestBox); 
    });  
} 

$(document).ready(function() { 
    menu(); 
    taskListingSize(); 
    makeDropArea(); 
    makeDropElement(); 
    resizeAreas(); //<-- this is the one with the problems 

    $(".dropArea").resize(resizeAreas()); 

    $(window).resize(function() { 
    taskListingSize(); 
    makeDropArea(); 
    makeDropElement(); 
    }); 
}); 

感谢。

更新1:

我已经做了一些测试,这个bug只在Chrome和Firefox,但不是在IE浏览器。该问题仅出现在openshift平台上。

+2

resizeAreas()在错误的区域中调用。删除'()',它可能工作 – Ibu

+0

我试过了。相同的输出。任何其他想法? – user3618198

+0

尝试重命名该函数,也许它是一个保留名称 – TecHunter

回答

1

要么改变:

$(".dropArea").resize(resizeAreas()); 

要:

$(".dropArea").resize("resizeAreas"); 

或者:

$(".dropArea").resize(function(){ 
    resizeAreas(); 
}); 
+1

感谢代码审查,但proplem依然存在。我认为引起它的代码行是你建议我改变的代码之上的代码行。当我使用调试它工作正常。 – user3618198

0

我觉得应该是

$(".dropArea").resize(resizeAreas); 

$(".dropArea").resize(function(){ 
     resizeAreas(); 
    });