Javascript 可以在元素的属性上设置JS侦听器吗?

Javascript 可以在元素的属性上设置JS侦听器吗?,javascript,css,attributes,Javascript,Css,Attributes,我想在元素的宽度增长到一定大小时运行JavaScript函数。正确地说,侦听器似乎只用于“事件”。但是有没有办法在CSS属性上设置一个“侦听器”,比如宽度?如果是,如何调整?如果使用jQuery,可以使用调整大小事件来标识宽度 编辑:添加工作示例 如果您特别希望侦听DOM元素上的属性更改,则可以在现代浏览器中使用MutationObserver()和mutationevents() 如果不是属性更改而是导致DOM元素更改大小的另一个事件,则可以挂接到该事件中,例如,如果是窗口大小调整导致更改

我想在元素的宽度增长到一定大小时运行JavaScript函数。正确地说,侦听器似乎只用于“事件”。但是有没有办法在CSS属性上设置一个“侦听器”,比如宽度?如果是,如何调整?

如果使用jQuery,可以使用调整大小事件来标识宽度

编辑:添加工作示例


如果您特别希望侦听DOM元素上的属性更改,则可以在现代浏览器中使用MutationObserver()和mutationevents()

如果不是属性更改而是导致DOM元素更改大小的另一个事件,则可以挂接到该事件中,例如,如果是窗口大小调整导致更改,则可以使用以下代码绑定该事件(请注意,IE 8及更早版本需要回退):

如果宽度的变化是由JavaScript库引起的,那么可能会有一个API,或者可以重写一个函数来创建一个


最后,您可以使用setInterval或RequestAnimationFrame轮询DOM元素,具体取决于您需要检查元素的频率。

如果您需要在2020年侦听元素大小,则可以使用ResizeObserver

您可以尝试使用以下代码段打印元素的维度更改

const resizeObserver = new ResizeObserver(entries => {
    for (let entry of entries) 
        console.log(entry);
});

resizeObserver.observe(htmlElement);

这是可能的。基于width@Danko:这是怎么可能的?请查看此帖子或浏览器窗口中的此帖子,而不是特定元素(这是他想要的)。请注意,只有窗口具有链接文档中的调整大小事件:“当浏览器窗口的大小更改时,调整大小事件会发送到窗口元素”@RocketHazmat&adeneo-我已经用JSFiddle示例更新了答案。JHNK-请尝试并让我知道它是否起作用。您的JSFIDLE示例使用jQuery UI创建一个div。调整div的大小时,jQuery将手动触发
resize
事件。如果通过任何其他方法调整div的大小,这将不起作用。我怀疑这是OP想要的。
window.addEventListener("resize", function(e){});
const resizeObserver = new ResizeObserver(entries => {
    for (let entry of entries) 
        console.log(entry);
});

resizeObserver.observe(htmlElement);