我需要在非DOM相关对象上使用jQuery事件。
这很好用:
var o = {
}
$(o).on('bump', function () {
alert('ouch')
})
$(o).trigger('bump')
但我需要在属性上附加一个事件......以下代码不起作用。
var o = {
prop: 'test'
}
// Bind an event handler
$(o.prop).on('bump', function () {
alert('ouch')
})
// Trigger an event
$(o.prop).trigger('bump')
http://jsfiddle.net/d35bf35y/1/
在我的真实应用程序中,属性将有一个对象。
我想知道是否可以以这种方式使用jQuery或替代解决方案。
答案 0 :(得分:4)
"在我的真实应用程序中,属性将有一个对象。"
这一部分非常重要。这有效:
var o = {
prop: {}
}
// Bind an event handler
$(o.prop).on('bump', function () {
alert('ouch')
})
// Trigger an event
$(o.prop).trigger('bump')
答案 1 :(得分:0)
你可以在Object上附加一个,每次它触发时,你运行一个与你的属性做某事的函数。 (检查它们是否相同,否则)
var o = {
prop: 'test'
};
$(o).on('bump', function (e) {
var props = e.delegateTarget;
// do what you gotta do, like check if something has changed from before.
})
$(o).trigger('bump')
或者,如果您的财产也是一个对象,它应该有用。