听“风格改变”事件有可能吗?是否可以在jQuery中创建可以绑定到任何样式更改的事件侦听器?例如,如果我想在元素更改维度时“做”某件事,或者在样式属性中做任何其他更改,我可以这样做:$('div').bind('style', function() {
console.log($(this).css('height'));});$('div').height(100); // yields '100'这将是非常有用的。有什么想法吗?更新对不起,我自己回答了这个问题,但我写了一个很好的解决方案,可能适合其他人:(function() {
var ev = new $.Event('style'),
orig = $.fn.css;
$.fn.css = function() {
$(this).trigger(ev);
return orig.apply(this, arguments);
}})();这将临时覆盖内部Prototype.css方法,并在最后用触发器重新定义它。所以它是这样工作的:$('p').bind('style', function(e) {
console.log( $(this).attr('style') );});$('p').width(100);$('p').css('color','red');
3 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
css
江户川乱折腾
TA贡献1851条经验 获得超5个赞
var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { console.log('style changed!'); }); });var target = document.getElementById('myId');observer.observe(target, { attributes : true, attributeFilter : ['style'] });
翻阅古今
TA贡献1780条经验 获得超5个赞
(function() { orig = $.fn.css; $.fn.css = function() { var ev = new $.Event('style'); orig.apply(this, arguments); $(this).trigger(ev); }})();
添加回答
举报
0/150
提交
取消