したがって、jquery ajax呼び出し、いくつかのcss変更、およびdivの再配置を含むこの長い関数がjqueryにあります。これが私のコードです:
$('.editable').click(function(e) {
//assign the attributes for the ajax call
$('#employeelist span').html("job: " + $(this).attr("editjob") + "<br />date: " + $(this).attr("editdate").substr(5));
$('#employeelist').attr("editjob", $(this).attr("editjob"));
$('#employeelist').attr("editdate", $(this).attr("editdate"));
//update the employee list with AJAX
$.get("getDaySchedule.php",
{'job': $('#employeelist').attr("editjob"), 'date': $('#employeelist').attr("editdate")},
function(responsetext){$('#employeelist ul').html(responsetext);},
"html"
);
//show the employee list
$('#employeelist').show()
.css('top',$(this).offset().top+25)
.css('left',($(this).offset().left+130))
.css('visibility', "visible")
.removeClass()
.addClass($(this).attr('class'));
//adjust the employee list if it goes outside the viewable area:
if ($('#employeelist').height() + $('#employeelist').offset().top > $(window).height()) {
newtop = ($('#employeelist').height() + $('#employeelist').offset().top) - $(window).height();
newtop = $('#employeelist').offset().top - newtop;
$('#employeelist').css('top',newtop);
};
if ($('#employeelist').width() + $('#employeelist').offset().left > $(window).width()) {
newleft = $('#employeelist').offset().left - 260;
$('#employeelist').css('left',newleft);
};
});
私が抱えている問題は、コードの最後のセクション(表示可能領域の外にある場合はdivの位置を変更する)がajax呼び出しが行われる前に実行されているように見えることです。したがって、基本的にdivの高さは、応答テキストをまだ取得していないため、非常に短くなっています。これにより、divが高すぎて表示可能領域を超えてしまいます。これは、divが正しい高さから再配置されていないためです。うまくいけば、それは理にかなっています。コードに欠けているものはありますか?ありがとう!