jquery .on
работает, отслеживая события в родительском объекте и затем вызывая обработчик, если событие произошло из соответствующего дочернего селектора.В вашем случае, однако, вы хотите отслеживать событие: элемент изменился
Браузеры запускают событие onchange только для элементов ввода (поскольку они могут быть изменены пользователем).
Еслилюбой другой элемент изменяется, это должно быть из-за JavaScript, поэтому вы можете вызывать функции после создания нового контента.
$(".child", parentElementContext).hoverIntent( makeTall, makeShort )
Есть 2 практических решения
1) Что я обычно делаю, это создаюметод init, который принимает контекст (такой как документ).
MyPage.init = function(context) {
$('.selector', context).hoverIntent();
$('.other', context).dialog(); // any other plugins
};
Затем я вручную вызываю init, когда обновляю DOM (потому что мне не всегда нужно вызывать init, когда я обновляю dom)
$.ajax({
url: url,
data: data,
success: function(data){
var context = $('.parent');
context.html(data);
MyPage.init(context); //calls hoverIntent and other plugins
}
});
2) Если вам действительно нужно все контролировать, вы можете использовать этот плагин http://james.padolsey.com/javascript/monitoring-dom-properties/
, а затем $('.parent').on('valuechange', function() { /* init plugins*/}