2011-01-26 4 views
3
function barvaInfo(event) { 

$(document).ready(function(){ 
var nid = window.event.srcElement.id; 
} 

IE에서는 작동하지만 FF에서는 작동하지 않습니다. 이 jquery 사용할 수 있습니까? 나는 JQuery 이벤트 api로 시도하지만 그때 나는 그것으로부터 ID를 얻는 방법을 모른다.jquery의 이벤트에서 elementId를 가져옵니다.

+0

DOM로드가 완료되면 요소의 ID를 얻으려고하는 것 같습니다. 어떤 이벤트에서 srcElement를 가져 오려고합니까? – user113716

+0

일반 이벤트 – senzacionale

+1

'window.event'는 IE에만 ​​해당됩니다. 다른 브라우저는 이벤트가 실제로 발생할 때'event' 객체를 얻는 이벤트 핸들러에 매개 변수를 가지고 있습니다. – user113716

답변

4

jQuery를 사용하는 경우 이벤트 처리기에 매개 변수를 할당 한 다음 각 이벤트의 함수에 인수를 전달해야합니다.

이벤트를받은 요소의 컨텍스트에서 호출 할 수도 있습니다.

 // 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 
} 
+0

클릭시 mousover가 필요한 경우 – senzacionale

+0

@senzacionale : 대신 mouseover() 이벤트를 할당합니다. 내 대답을 업데이트 하겠지만 같은 원리입니다. 편집 : 대신 'mouseover'를 사용하여 내 대답을 업데이트했습니다. – user113716

+1

... 'mouseenter'가 상황에 더 적합 할 수도 있습니다. 대상 요소에서 처리기를 시작하고 하위 요소는 처리하지 않습니다. – user113716

2

event object는 위해 jQuery를 통해 규격화 각 event handler로 전달된다 핸들러 내

$('someelement').bind('click', function(event) { 
    var nid = this.id; // event.target.id 
}); 

, this는 호출의 DOM 노드를 지칭한다. 따라서 this.id은 요소의 id을 처리합니다. 또는 이벤트 객체는 요소를 나타내는 target이라는 속성을 소유합니다. 지적

patrick dw으로

편집하는 것은 this는 항상 이벤트 핸들러가 결합 된에 노드에 대한 참조가 될 것입니다. event.target은 정확히 말하면 실제 대상 인 요소입니다. 예제 링크에 대한 주석을보십시오.

+0

'this'와'event.target'은 반드시 같은 요소 일 필요는 없습니다. – user113716

+0

@ 패트릭 : 예? – jAndy

+0

이벤트는 제네릭 유형입니다. 나는 클래스 또는 뭔가 다른 비트를 사용할 수 있습니다 제네릭 요소에 사용하고 싶습니다. – senzacionale