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

在内联JavaScript处理程序中使用jQuery事件,jquery,events,inline,Jquery,Events,Inline,我正在处理一个项目,仅限于通过内联处理程序处理JavaScript事件,如onclick和onchange。但是,我需要我的处理程序是跨浏览器的。我习惯于使用jQuery进行此操作,但由于我不能使用$('#id')。单击(function(){…})我在访问jQuery样式的事件时遇到了一些困难 例如,我想这样做: <table> <tr onclick="if (event.target.tagName.toLowerCase() !== 'td') return fal

我正在处理一个项目,仅限于通过内联处理程序处理JavaScript事件,如
onclick
onchange
。但是,我需要我的处理程序是跨浏览器的。我习惯于使用jQuery进行此操作,但由于我不能使用
$('#id')。单击(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>
对于
onclick
处理程序,但是当您以这种方式在jQuery中包装事件时,它似乎没有提供
target
字段


我做错了什么?

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

$.event.fix(event).target.tagName.toLowerCase() !== 'td'
event.fix
不在jQuery的公共界面中,但它似乎完成了任务


请在此处查看:

为什么绝对有必要将其内联?你不能把脚本标签放在html的某个地方吗?
$.event.fix(event).target.tagName.toLowerCase() !== 'td'