我正在尝试捕获所有表单提交事件,从action属性获取url并使用它使用AJAX将表单内容发送到该地址.所以我需要的只是一个提交事件处理程序.但是我很快就陷入了麻烦,因为它似乎无法在IE中运行.
$(document).submit(function(e) {
alert('clicked');
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
这是我用于跨浏览器测试目的的代码.它适用于Chrome,Firefox,但不适用于IE.我不允许在文档上设置事件监听器吗?
lon*_*day 23
看看jQuery API:
JavaScript提交事件不会在Internet Explorer中冒泡.但是,依赖于事件委托和提交事件的脚本将在jQuery 1.4之后在浏览器中一致地工作,这会对事件的行为进行规范化.(api.jquery.com/submit)
该submit事件不会在Internet Explorer中冒泡,因此该document元素永远不会被通知submit事件.jQuery将为您规范化,但仅限于您使用事件委派.这并不难做到,事实上如果它的复杂程度更高,可能会使你的代码变得更好:
$(document).on('submit', 'form', function(e) {
alert('clicked');
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
这保持了绑定的优点document(例如,捕获不存在的元素上的事件),同时使其在IE中成为可能.请注意this,在事件处理程序中,现在是form元素,而不是document.