javascript - 让 jQuery 立即改变高度而不是在第二次运行时改变高度?

标签 javascript jquery html css

请查看下面的 jsfiddle(抱歉布局丑陋)。

http://jsfiddle.net/neowot/7hLrLdn2/8/ <---精简版...

如果您在框中输入内容并按 Enter,则包含您的元素的 div 将添加到左侧列。此外,包含单词“Bands”的 div 将添加到右列。

红色代表左边div的高度。橙色代表右侧 div 的高度。

有一个 jQuery 函数用于匹配右侧 div 的高度和左侧 div 的高度。但是请注意,右边的 div 高度较小,而不是等高。

有趣的是,如果您键入其他内容并按回车键,您会注意到右侧的高度与左侧的 div 匹配。因此,这意味着代码可以正常工作,但会延迟。

我怎样才能使代码立即运行,以便在您第一次 按下回车键后,右边的 div 高度等于左边的 div 高度?

函数的定义在“//Where The Functions Are Defined”下

调用的地方在“//Where The Functions Are Called”下

谢谢。

JS定义

$(document).ready(function() {


/*--------------------------------------------------------------*/    
    //Where The Functions Are Defined 


function setMusicHeight(){  
    var UserMusicHeightX = $('#MusicDiv').outerHeight();
    var GenreMusicHeightX = $('#GenreMusicDiv').outerHeight();

JS调用

$('form').submit(function () {


/*--------------------------------------------------------------*/        
            //Where The Functions Are Called 
            setMusicHeight();                 
            setMovieHeight();
            setBookHeight();

最佳答案

您的脚本 正在尝试检索仍在显示的元素height - 如果它们不可见,该属性将返回 0 或更小的数字如果它们处于完全可见的中途,则应该比它应该的要多。

解决方案是相应地在 .fadeIn().slideToggle() 回调上调用调整大小的脚本。您可以简化并在每种情况下只调用必要的。

一般来说,它会是这样的:

function resize() {
    setMusicHeight();
    setMovieHeight();
    setBookHeight();
}

$('#MusicDiv').fadeIn(resize);

.slideToggle(270, resize)

Demo

.slideToggle()

.fadeIn()

关于javascript - 让 jQuery 立即改变高度而不是在第二次运行时改变高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30111426/

相关文章:

php - 如何将我的 JSON 输出检索到 JavaScript 变量中?

javascript - jquery click() 和 on() 不工作

javascript - JSON Schema 提取所需字段

javascript - html5文件上传

jquery - 恢复“选择的选择”中预先选择的值

javascript - 如何在 jQuery 中验证文本框

javascript - 取消 Javascript 间隔警报

html - 表格宽度超过容器的宽度

html - 变换比例不适用于嵌套在按钮中的元素

html - 如何使用 CSS 增加 block 引号不同部分之间的间距?