jQuery不会接受编程元素.onchange()调用
jQuery doesn't pick up programmatic element.onchange() calls
这更像是一个教育问题,而不是一个需要解决的问题。
所以我有一个使用 Ryan Fait 的自定义元素插件进行样式设置的input
。
<input type="checkbox" class="styled" id="no-favourite" />
我绑定了一个 jQuery change()
处理程序:
$("#no-favourite").change(function(){
console.log("changed");
});
并编辑了自定义元素插件的check
方法,以包括:
try{
element.onchange();
}catch(err){
console.log(err);
}
这行不通。我预计会console.log
"更改",最坏的情况是console.log
错误,尽管两者都没有收到。jQuery change
处理程序在单击关联的label
时被调用。
我通过使用解决了这个问题:
$(element).change();
所以我想知道,为什么jQuery不对element.onchange()
进行编程调用?
假设element
是一个DOM元素(如果它是一个jQuery元素,它就会爆炸),你正在尝试调用元素的属性onchange
。
当您通过 jQuery 绑定事件处理程序时,它不会添加任何onchange
属性 - 这些属性仅在内联(在标记中)或通过本机 javascript 绑定处理程序时才存在。
jQuery
将使用其 API 绑定的事件存储在每个对象内的特殊data
容器中,因此您不能真正使用本机方法调用它on*
(只能使用 .onchange = function()
或内联onchange=
进行本机设置)。
如果你启动你的控制台(chrome),并键入$.event
,你会看到jQuery事件的内部表示形式,"默认"事件存储在$.event.global
中,并在内部管理。
在 http://code.jquery.com/jquery-1.8.0.js 搜索jQuery.event.global[ type ]
if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
// No jQuery handlers for this event type, and it can't have inline handlers
return;
}
// Caller can pass in an Event, Object, or just an event type string
event = typeof event === "object" ?
// jQuery.Event object
event[ jQuery.expando ] ? event :
// Object literal
new jQuery.Event( type, event ) :
// Just the event type (string)
new jQuery.Event( type );
相关文章:
- 从javascript调用服务器端的下拉列表onchange函数
- 从Document调用onchange函数.已准备好从更新中预先选择的项目
- 提交按钮只能在onchange调用输入文本后第二次点击时工作
- InnerHTML 调用 JavaScript 函数 onchange.
- jQuery不会接受编程元素.onchange()调用
- 在 onchange 上调用 2 个 JS 函数,并且都返回一些值
- 对于新建的元素,onchange函数只调用一次
- 如何在窗体打开时调用OnChange
- 在选择框的onchange期间调用JavaScript函数
- 从jQuery调用SelectHTML元素OnChange事件
- 如何在触发:onchange事件时调用ruby方法(ruby on rails 4)
- 在下拉列表中加载默认值并调用 onchange 事件
- Javascript函数不是从onchange调用的(并非总是如此)
- 为什么从子窗口调用时父窗口的 OnChange 事件文本框不起作用
- 如何调用一个jQuery Colorbox弹出在选择HTML控件的onchange事件
- 在 onChange 事件中调用 2 个函数
- this.value 在从 onchange 事件调用函数时显示为 undefind
- 使用onchange调用多个函数
- JavaScript和JQuery在select标签中的onchange调用时不起作用
- 通过一个 Onchange 调用两个函数()