如何在非DOM相关对象及其属性上使用jQuery事件?

时间:2014-08-26 16:53:29

标签: javascript jquery javascript-events

我需要在非DOM相关对象上使用jQuery事件。

这很好用:

var o = {

}

$(o).on('bump', function () {
  alert('ouch')
})

$(o).trigger('bump')

http://jsfiddle.net/d35bf35y/

但我需要在属性上附加一个事件......以下代码不起作用。

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或替代解决方案。

2 个答案:

答案 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')

或者,如果您的财产也是一个对象,它应该有用。