使用change()来检测属性值的变化

时间:2013-09-26 05:56:04

标签: javascript jquery

有可能吗?我想检测div的宽度,例如,用on()绑定它来做某事......

var widthVal= $('#panel').width();

$(widthVal).on('change', function(){

});

然后我创建一个按钮来增加#panel的宽度,但没有任何事情发生..

使用change()来检测属性值的变化?有意义吗?

2 个答案:

答案 0 :(得分:0)

简单的答案是使用mutation events

但是,它们一直是deprecated,并没有得到广泛支持。

我认为最好的办法是使用计时器定期检查CSS属性是否已更改;

var $panel = $('#panel');
var width = $panel.width();

$panel.on('resized', function () {
  // do something!
});

setInterval(function () {
  if ($panel.width() !== width) $panel.trigger('resized');
}, 50);

答案 1 :(得分:0)

我建议使用以下方法http://jsfiddle.net/krasimir/5PXnv/

HTML

<div>test</div>

JS

var changeWidth = function(el, width) {
    el.css("width", width + "px");
    el.trigger("width-changed");
}
var div = $("div");
div.on("width-changed", function() {
    console.log("changed");
});
setTimeout(function() {
    changeWidth(div, 200);
}, 1000);