非 DOM 对象上的 jQuery 自定义事件
我最近读了一些代码,它做了这样的事情:
bob = {'name': 'Bob Smith', 'rank': 7};
$(bob).bind("nameChanged", function () { /* ... */});
// ...
$(bob).trigger("nameChanged");
这似乎有效。
但我在 jQuery 文档或源代码中找不到任何有关使用既不是选择器也不是 DOM 节点的对象调用 jQuery 构造函数的内容。所以我的问题是,这是受支持的用途,还是本质上是偶然起作用的?
如果您想在 JavaScript 中为模型或视图对象使用事件驱动模型,您会怎么做?
I read some code recently that does something like this:
bob = {'name': 'Bob Smith', 'rank': 7};
$(bob).bind("nameChanged", function () { /* ... */});
// ...
$(bob).trigger("nameChanged");
This appears to work.
But I can't find anything in the jQuery documentation or source about calling the jQuery constructor with an object that is neither a selector nor a DOM node. So my question is, is this a supported use, or is it essentially working by accident?
If you wanted to use an event-driven model for your Model or View objects in JavaScript, how would you do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
所发生的情况是,它只是将该对象包装在 jQuery 包装器中。然后,它将回调应用于该对象的新属性,然后触发它。
这是一种奇怪的做事方式,但完全可以接受。
What happens is that it just wraps that object in a jQuery wrapper. It then applies a callback to a new property on that object and then triggers it.
It's an odd way of doing things, but perfectly acceptable.