Является ли это возможным? Я хочу, например, определить ширину div, привязать его с помощью функции on(), чтобы что-то сделать.
var widthVal= $('#panel').width();
$(widthVal).on('change', function(){
});
то я создаю кнопку, чтобы увеличить ширину #panel, но ничего не произойдет.
использовать change() для обнаружения изменений значения атрибута? смысл?
Я предлагаю использовать следующий подход: 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);
Простым ответом будет использование мутационных событий.
Однако они устарели и не получили широкой поддержки.
Я считаю, что лучше всего использовать таймер, чтобы периодически проверять, изменился ли атрибут CSS;
var $panel = $('#panel');
var width = $panel.width();
$panel.on('resized', function () {
// do something!
});
setInterval(function () {
if ($panel.width() !== width) $panel.trigger('resized');
}, 50);