使用jquery更改css属性时的事件

有没有办法检测一个元素的“显示”CSS属性是否改变(是否或块或内联块…)? 如果没有,任何插件? 谢谢

是的你可以。 DOM L2事件模块定义突变事件 ; 其中之一 – DOMAttrModified是你需要的。 当然,这些并没有得到广泛的实施,但至less在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插件 。 该插件的主要function是绑定一个监听器函数对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函数来testingCSS属性,例如。 if ($('node').css('display') == 'block')

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

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

不知道这是你在找什么。

对于CSS转换会影响的属性,可以使用transitionend事件,例如z-index:

 $(".observed-element").on("webkitTransitionEnd transitionend", function(e) { console.log("end", e); alert("z-index changed"); }); $(".changeButton").on("click", function() { console.log("click"); document.querySelector(".observed-element").style.zIndex = (Math.random() * 1000) | 0; }); 
 .observed-element { transition: z-index 1ms; -webkit-transition: z-index 1ms; } div { width: 100px; height: 100px; border: 1px solid; position: absolute; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="changeButton">change z-index</button> <div class="observed-element"></div> 

你不能。 CSS不支持“事件”。 我敢问你需要什么? 看看这个post在这里。 我想不出你为什么要把一个事件连接到一个风格变化的原因。 我在这里假设风格的变化是由一段JavaScript引起的。 为什么不在那添加额外的逻辑?