Javascript 当DIV的高度低于某个数字时,隐藏DIV的正确逻辑是什么?

Javascript 当DIV的高度低于某个数字时,隐藏DIV的正确逻辑是什么?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个充满图像的div 我有一个按钮,可以从div中一个接一个地删除图像,从而每次都降低其高度 当div的高度低于75px(意味着它不再保存任何图像)时,我有一个jQuery代码,用于在检测到低高度时立即隐藏div: if ($('#ImageDiv').height() < 75) { $('#ImageDiv').hide(); } if($('#ImageDiv').height()

我有一个充满图像的div

我有一个按钮,可以从div中一个接一个地删除图像,从而每次都降低其高度

当div的高度低于75px(意味着它不再保存任何图像)时,我有一个jQuery代码,用于在检测到低高度时立即隐藏div:

 if ($('#ImageDiv').height() < 75) {
    $('#ImageDiv').hide();
}
if($('#ImageDiv').height()<75){
$('#ImageDiv').hide();
}
此代码编程为用户每次单击“删除图像”按钮时激活

相反,这里是实际发生的情况:用户单击按钮,从而删除图像,但是div不会立即隐藏div,尽管高度低于75。相反,它需要再次单击按钮,以了解高度是否足够低,从而隐藏div


我的逻辑有什么问题,如何解决这个问题?

这种情况可能是在高度检查条件之后,您正在从
div
删除图像。一定要早点做


或者,您可以简单地使用
if($('#ImageDiv').has('img').length)
表示div内是否存在
img
标记。这也适用于小于
75
的图像。

情况可能是,您在高度检查条件之后从
div
中删除图像。一定要早点做

或者,您可以简单地使用
if($('#ImageDiv').has('img').length)
来表示div中是否存在
img
标记。这也可以用于小于
75
的图像。

这可能会帮助您:

$('#remove').on('click', function(){
    $('#ImageDiv > img').last().remove(); //remove the last Image
    if ($('#ImageDiv > img').length === 0) { //check if there is an image left
        $('#ImageDiv').hide();
    }
});
通常我建议缓存重用的jQuery对象,但在这种情况下,这会导致错误,因为检查了旧状态

旁注:如果此按钮位于表单元素或样式化锚标记内,则可能需要在函数开头使用
event.preventDefault()

这可能会帮助您:

$('#remove').on('click', function(){
    $('#ImageDiv > img').last().remove(); //remove the last Image
    if ($('#ImageDiv > img').length === 0) { //check if there is an image left
        $('#ImageDiv').hide();
    }
});
通常我建议缓存重用的jQuery对象,但在这种情况下,这会导致错误,因为检查了旧状态

旁注:如果此按钮位于表单元素或样式化锚标记内,则可能需要在函数开头使用
event.preventDefault()


没有任何代码,这是我最好的。。。尝试在控制台上打印,或在函数末尾显示alert
$(“#ImageDiv”).height()
,查看它的实际大小

是否使用动画删除图像?如果是,您可以在动画的
complete
回调中检查高度值。在动画完成之前,您可能正在评估
$('#ImageDiv').height()

希望这有帮助

评论后编辑

使用.slideUp()函数,可以将函数作为第二个参数传递(回调)。在那里,您可以检查或执行任何您想要的操作:

$('#ImageDiv').slideUp('fast', function() {
   // After slideUp is completed, run this... 
});
更多信息请点击此处:

如果使用.remove()函数,可以使用以下选项检查高度:

$.when($('#your_Removed_DIV_ID').remove()).then( 
   console.log(
    'Height: ' + $('#ImageDiv').height()
    ) 
);

没有任何代码,这是我的更好。。。尝试在控制台上打印,或在函数末尾显示alert
$(“#ImageDiv”).height()
,查看它的实际大小

是否使用动画删除图像?如果是,您可以在动画的
complete
回调中检查高度值。在动画完成之前,您可能正在评估
$('#ImageDiv').height()

希望这有帮助

评论后编辑

使用.slideUp()函数,可以将函数作为第二个参数传递(回调)。在那里,您可以检查或执行任何您想要的操作:

$('#ImageDiv').slideUp('fast', function() {
   // After slideUp is completed, run this... 
});
更多信息请点击此处:

如果使用.remove()函数,可以使用以下选项检查高度:

$.when($('#your_Removed_DIV_ID').remove()).then( 
   console.log(
    'Height: ' + $('#ImageDiv').height()
    ) 
);

您需要阻止按钮的默认活动并执行所需的操作

示例:

$("#btn").click(function(e){
    e.preventDefault();
    $('#ImageDiv img:last-child').remove();
    if ($('#ImageDiv').height() < 75) {
        $('#ImageDiv').hide();
        $('p').text("#ImageDiv is now hidden!");
    }
});
$(“#btn”)。单击(函数(e){
e、 预防默认值();
$('#ImageDiv img:last child')。删除();
如果($('#ImageDiv').height()<75){
$('#ImageDiv').hide();
$('p').text(“#ImageDiv现在已隐藏!”);
}
});

您需要阻止按钮的默认活动并执行所需的操作

示例:

$("#btn").click(function(e){
    e.preventDefault();
    $('#ImageDiv img:last-child').remove();
    if ($('#ImageDiv').height() < 75) {
        $('#ImageDiv').hide();
        $('p').text("#ImageDiv is now hidden!");
    }
});
$(“#btn”)。单击(函数(e){
e、 预防默认值();
$('#ImageDiv img:last child')。删除();
如果($('#ImageDiv').height()<75){
$('#ImageDiv').hide();
$('p').text(“#ImageDiv现在已隐藏!”);
}
});

您需要阻止按钮的默认活动并执行所需的操作。您能详细说明一下吗?=\我是说,我该怎么做?请注意,我对jQuery还不太熟悉。如果能提供更多的代码,会更容易为您提供帮助(包括您的整个jQuery、css和html,以获得更清晰的帮助。)您需要阻止按钮的默认活动并执行所需的操作。请详细说明?=\我是说,我该怎么做?请注意,我对jQuery还不太熟悉。如果能提供更多的代码,会更容易为您提供帮助(包括您的整个jQuery、css和html,以获得更清晰的帮助。)原来是动画造成了问题。我让它做了一个“SlideUp”动画,当我把它改为“Remove”时,代码按预期工作。现在我需要知道如何在完全回调时检查高度值?谢谢,你的直觉很准确,这完美地解决了我的问题。这是非常令人欣慰的。我真的很感激,并希望你有一个伟大的一天。原来是动画造成的问题。我让它做了一个“SlideUp”动画,当我把它改为“Remove”时,代码按预期工作。现在我需要知道如何在完全回调时检查高度值?谢谢,你的直觉很准确,这完美地解决了我的问题。这是非常令人欣慰的。我真的很感激,希望你有一个美好的一天。