4

假设我有一个 JQuery 对象,el它选择了一个元素。el.trigger("change")如果选择的元素是DIV ,调用是否合法、安全、合理?其他元素类型呢?就此而言,我可以打电话el.change()吗?

.change()的JQuery 文档说:

当元素的值改变时,change 事件被发送到元素。此事件仅限于 <input> 元素、<textarea> 框和 <select> 元素。

我不清楚这里的“有限”是什么意思。它可能指的是只有这三种元素类型会自动产生这些事件,但它可能意味着其他元素是不允许的。

从经验上看,Chrome v28 似乎允许它,但我想知道我是否可以期望它能够正常工作。

目标

我有一个伪控件,它由一组包含在 div 中的按钮和跨度组成。控件的每个实例都维护和管理一个值,该值通过单击控件的按钮进行修改。当值发生变化时,我需要从 div 中发送一个事件,以便页面的其余部分可以做出反应。我不想监听控件外部的点击事件,因为这会将周围的代码耦合到控件的内部,并不是所有的点击都会改变值。

我可以创建一个新的事件名称,但内置的“更改”事件在概念上似乎是正确的,所以如果可以的话,我宁愿使用它。作为额外的奖励,我的页面已经是一个“更改”处理程序,它用正确的行为绑定了正确的位置(因为我在页面上也有一些输入和选择控件)。

我需要支持 IE8 及更高版本,以防答案因浏览器品牌和版本而异。

4

1 回答 1

2

没有限制,您可以在任何 HTML 元素上触发您喜欢的任何事件类型。
jQuery 文档只是告诉您change仅在<input>,<textarea><select>

于 2013-07-19T14:21:36.107 回答