关于如何更好的监听元素属性的变化(转)
16lz
2021-01-22
我们都知道,jQuery有一个onchange的事件来判断类似input或者textarea标签值变化的事件。
jQuery中是通过比如keyup,blur,click等事件来监听值的变化,如果变化就触发change事件。
jQuery.event.special.change = { filters: { focusout: testChange, beforedeactivate: testChange, click: function( e ) { var elem = e.target, type = elem.type; if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) { testChange.call( this, e ); } }, // Change has to be called before submit // Keydown will be called before keypress, which is used in submit-event delegation keydown: function( e ) { var elem = e.target, type = elem.type; if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") || (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || type === "select-multiple" ) { testChange.call( this, e ); } }, // Beforeactivate happens also before the previous element is blurred // with this event you can't trigger a change event, but you can store // information beforeactivate: function( e ) { var elem = e.target; jQuery._data( elem, "_change_data", getVal(elem) ); } }, setup: function( data, namespaces ) { if ( this.type === "file" ) { return false; } for ( var type in changeFilters ) { jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); } return rformElems.test( this.nodeName ); }, teardown: function( namespaces ) { jQuery.event.remove( this, ".specialChange" ); return rformElems.test( this.nodeName ); } };
更多相关文章
- 屏蔽标签的href跳转功能
- 前端笔记之JavaScript(十)深入JavaScript节点&DOM&事件
- 使用Javascript / jQuery的/ CSS。如何在目标div之外维护拖动事
- Github推送事件签名不匹配
- 在鼠标悬停事件中使用Javascript隐藏内容
- 谷歌Chrome复制了JavaScript的“焦点”事件
- js“DOM事件”之鼠标事件、js的测试方法、js代码的放置位置
- 使用angularjs添加包含事件的新标记
- jqGrid 数据加载完事件 loadComplete 使用