Javascript 从jquery中的事件获取elementId
这在IE中有效,但在FF中无效。我可以使用jquery进行此操作吗?我尝试使用JQuery事件api,但不知道如何从中获取ID。通过JQuery为您规范化Javascript 从jquery中的事件获取elementId,javascript,jquery,Javascript,Jquery,这在IE中有效,但在FF中无效。我可以使用jquery进行此操作吗?我尝试使用JQuery事件api,但不知道如何从中获取ID。通过JQuery为您规范化事件对象,并将其传递到每个事件处理程序: function barvaInfo(event) { $(document).ready(function(){ var nid = window.event.srcElement.id; } 在处理程序中,此引用调用的dom节点。因此,this.id将处理元素的id。或者,事件对象拥有一个名为t
事件对象
,并将其传递到每个事件处理程序
:
function barvaInfo(event) {
$(document).ready(function(){
var nid = window.event.srcElement.id;
}
在处理程序中,此
引用调用的dom节点。因此,this.id
将处理元素的id
。或者,事件对象拥有一个名为target
的属性,该属性也表示元素
编辑
正如patrick dw指出的,
此
始终是对事件处理程序绑定到的节点的引用<代码>事件。目标就是它所说的,即实际目标的元素。请参阅注释以获取示例链接。如果使用jQuery,则需要为事件处理程序分配一个参数,然后在每个事件上将参数传递给函数
您可能还希望从接收事件的元素的上下文中调用它
$('someelement').bind('click', function(event) {
var nid = this.id; // event.target.id
});
此
和事件。目标
不一定是同一元素。事件是泛型类型。我知道我可以在泛型元素上使用类或其他东西。@patrick:是的,先生。我忘记了嵌套节点和冒泡。我将在.thx中更正我的答案,我尝试$('div').bind('mouseover',function(event){var nid=this.id;});但是我现在得到了30个ID,而不是我称之为mouseoverIt的ID。看起来,当DOM完成加载时,您正试图获得元素的ID。您正在尝试获取哪个事件的src元素?窗口。event
特定于IE。其他浏览器的事件处理程序中有一个参数,该参数在事件实际发生时获取一个event
对象。如果我在mousover而不是on上需要它怎么办click@senzacionale:然后指定一个mouseover()
事件。我会更新我的答案,但原则是一样的。编辑:更新我的答案,使用mouseover
而不是click
…您也不应该认为mouseenter
可能更适合您的情况。它将只在目标元素上启动处理程序,而不会启动其子元素。
// some mouseover event handler
$('div').mouseover( function( e ) {
barvaInfo.call( this, e )
});
function barvaInfo( event ) {
// element that originated the event
var nid = event.target.id;
// in this function, because we're using .call() to invoke it,
// "this" will reference the element that invoked the handler
}