当使用Jquery更改css属性时检测事件

有没有办法来检测元素的“显示”CSS属性是否更改(无论是否或块或内联块...)? 如果没有,任何插件? 谢谢


是的你可以。 DOM L2事件模块定义突变事件; 其中之一 - DOMAttrModified是你需要的。 当然,这些并没有得到广泛的实施,但至少在Gecko和Opera浏览器中得到支持。

尝试一下这些方面的内容:

document.documentElement.addEventListener('DOMAttrModified', function(e){
  if (e.attrName === 'style') {
    console.log('prevValue: ' + e.prevValue, 'newValue: ' + e.newValue);
  }
}, false);

document.documentElement.style.display = 'block';

您也可以尝试利用IE的“propertychange”事件来替代DOMAttrModified 。 它应该允许可靠地检测style变化。


你可以使用attrchange jQuery插件。 插件的主要功能是在HTML元素的属性更改上绑定侦听器函数。

代码示例:

$("#myDiv").attrchange({
    trackValues: true, // set to true so that the event object is updated with old & new values
    callback: function(evnt) {
        if(evnt.attributeName == "display") { // which attribute you want to watch for changes
            if(evnt.newValue.search(/inline/i) == -1) {

                // your code to execute goes here...
            }
        }
    }
});

您可以使用jQuery的css函数来测试CSS属性,例如。 if ($('node').css('display') == 'block')

科林是对的,没有明确的事件会在特定的CSS属性发生变化时被触发。 但是你可能会翻转它,并触发设置显示的事件,以及其他任何事情。

另外考虑使用添加CSS类来获得你想要的行为。 通常你可以添加一个类到一个包含元素,并使用CSS来影响所有元素。 我经常将一个类放在body元素上以表明AJAX响应正在等待处理。 然后我可以使用CSS选择器来获得我想要的显示。

不知道这是你在找什么。

链接地址: http://www.djcxy.com/p/83371.html

上一篇: Event detect when css property changed using Jquery

下一篇: Create dynamic div with jquery