gpt4 book ai didi

jquery - 在内联 JavaScript 处理程序中使用 jQuery 事件

转载 作者:行者123 更新时间:2023-12-01 04:29:31 26 4
gpt4 key购买 nike

我正在开发一个项目,并且仅限于通过 onclickonchange 等内联处理程序处理 JavaScript 事件。但是,我需要我的处理程序是跨浏览器的。我习惯于使用 jQuery 来实现此目的,但由于我无法使用 $('#id').click(function() { ... }) 我遇到了一些困难访问 jQuery 风格的事件。

例如,我想这样做:

<table>
<tr onclick="if (event.target.tagName.toLowerCase() !== 'td') return false; ...">
<td>...</td>
<td>...</td>
<td><a>...</a></td>
<td><a>...</a></td>
</tr>
</table>

基本上,此代码应该只处理对表格中没有任何 anchor 子元素的单元格的点击。

这在 Firefox 和 Chrome 以及几乎所有使用 W3C 事件的浏览器中都可以正常工作。不幸的是,在 IE 中,它不起作用。

我想做的是:

if ($.Event(event).target.tagName.toLowerCase() !== 'td') return false; ...

对于 onclick 处理程序,但当您以这种方式在 jQuery 中包装事件时,它似乎不提供 target 字段。

我做错了什么?

最佳答案

如果您查看 jQuery 源代码,您会发现创建 Event 对象并没有做太多事情。它所做的只是指定originalEvent、type 和timeStamp 属性。您真正想做的是“修复”默认对象,使其以某种跨浏览器的方式工作:

$.event.fix(event).target.tagName.toLowerCase() !== 'td'

event.fix 不在 jQuery 的公共(public)接口(interface)中,但它似乎可以完成这项工作...

在这里查看:http://jsfiddle.net/ryleyb/UdJqV/1/

关于jquery - 在内联 JavaScript 处理程序中使用 jQuery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3736947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com