如何使height返回数值而非对象?
问题解决:scrollTop返回对象而非数值的原因与修复
问题原因
你代码里的$(".chatbox_body").scrollTop(newHeight - old)是设置滚动条位置的调用,jQuery的这类 setter 方法遵循链式设计,会返回自身的jQuery对象,而非设置的数值,这就是变量height变成对象的原因。
修复方案
要获取滚动条的当前位置(数值),需要调用不带参数的scrollTop()方法。你需要把设置和获取操作分开:
window.addEventListener("updatedHeight", (event) => { let old = event.detail.height; alert(old); let newHeight = $(".chatbox_body")[0].scrollHeight; alert(newHeight); // 先设置滚动条位置 $(".chatbox_body").scrollTop(newHeight - old); // 再获取当前滚动条位置的数值 let height = $(".chatbox_body").scrollTop(); alert(height); window.livewire.emit("updateHeight", { height: height, }); alert(height); });
补充说明
- jQuery中,大多数方法遵循"getter/setter"规则:传参数是设置值,返回jQuery对象;不传参数是获取值,返回对应的数据类型(这里是数值)。
- 如果你想简化代码,也可以用链式调用的方式(但可读性稍差):
let height = $(".chatbox_body").scrollTop(newHeight - old).scrollTop();
内容的提问来源于stack exchange,提问作者Tuấn Nguyễn
相关产品推荐
相关产品推荐

