jQuery css promise 完成

标签 jquery css

有人可以给我建议吗:

示例:我有

<div id="breadCrumb" style="width:80%"></div>

不是,我想将此宽度更改为1oo%,并在点击时获取以px为单位的宽度

$('#menu_toggle').on('click', function() {
    var cache = $('#breadCrumb');

    cache.css('width', "100%").promise().done(function(){   
        console.log(cache.width());
    });
});

但我仍然得到 80% 值。

如果我再次单击,只有这样我才能获得 100% 像素值

这个想法是等到应用CSS并在之后获取新的宽度

有人有什么想法吗?

感谢您的帮助!

最佳答案

css 立即完成工作,非常简单

cache.css('width', "100%");
console.log("breadCrumb width: " + cache.width());

应该可以工作,并且可以在 Chrome 和 Firefox 上运行,除非您没有向我们展示某些内容:

$('#menu_toggle').on('click', function() {
    var cache = $('#breadCrumb');

    cache.css('width', "100%");
    console.log("breadCrumb width: " + cache.width());
    console.log("body width: " + $(document.body).width());
});
#breadCrumb {
  border-bottom: 2px solid blue;
}
<div id="breadCrumb" style="width:80%"></div>
<input id="menu_toggle" type="button" value="Click Me">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

但是如果您需要给浏览器一些时间来应用更改,您可以使用 setTimeout 来执行此操作:

$('#menu_toggle').on('click', function() {
    var cache = $('#breadCrumb');

    cache.css('width', "100%");
    setTimeout(function() {
      console.log("breadCrumb width: " + cache.width());
      console.log("body width: " + $(document.body).width());
    }, 50);
});
#breadCrumb {
  border-bottom: 2px solid blue;
}
<div id="breadCrumb" style="width:80%"></div>
<input id="menu_toggle" type="button" value="Click Me">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于jQuery css promise 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45436153/

相关文章:

javascript - 删除当前的 css 类并使用 jquery 添加新类

css - 动画 feComposite SVG 过滤器元素

Safari 框阴影插入支持

html - 媒体查询 CSS 仅在本地和网络中有效

javascript - 无法访问 iframe 内容(同源策略)

javascript - 以编程方式更改 jquery ui datepicker

javascript - 在 AJAX 中获取两个动态输入的值

jquery - 一对多的图像

javascript - 持久化 js 用户控件状态

html - <A Href> 文本下方有很多空白区域