2012-07-05 1 views
-1

현재 링크 용 jQuery 코드가 있습니다. 선택한 for의 링크를 클릭하면 대화 상자가 열립니다.

$('.dialog_link_add').click(function(){ 
    var row_id = $(this).parent().parent().attr('id'); 
    return false; 
} 

대화 상자가 항상 (Internet Explorer에서) 정상에 스크롤 창을 만드는 때문에

, 난 일반 자바 스크립트를 사용하는 방법을 기존의 FASION 방법을 구현하여 여기에 해결책을 발견했습니다.

onclick="function_call(this);return false;" 

...하지만 작동하지 않습니다. 어떻게 "this"매개 변수를 jQuery $ (this)와 같게 보낼 수 있습니까?

+0

직접 귀하의 질문에 대답하기 위해'의 onclick = ',하지만 "FUNCTION_CALL ($ (이)); false를 반환" 더 나은 해결책은 TJCrowder의 대답을 참조하십시오. – Matt

+1

-1 나중에 질문을 업데이트하고 IE에서 문제가 있다고 언급 한 후 7 분만 언급하십시오 – Blaster

답변

5

실제로 묻는 질문에 대한 대답은 $(this)의 원시 등가는 this이지만 주어진 onclick의 형식을 사용하면 함수에 전달하는 인수가됩니다.

function function_call(elm) { 
    var row_id = $(elm).parent().parent().attr('id'); 
    // ... 
} 

을하지만 완전히 원시 DOM을 이동 : 당신은 당신이 좋아하는 경우에 $()을 사용하여 다음과 (즉, 당신이 그것을 전달하는 방법이기 때문에) 그냥 인수로 요소를 받아, 그 기능에 jQuery를 계속 사용할 수 있습니다 :: 다양한 DOM 사양 및 HTML5 API의

function function_call(elm) { 
    var row_id = elm.parentNode.parentNode.id; 
} 

더 :

하지만 : 동일한 방법으로 jQuery를 버전에서 스크롤을 방지 할 수 있습니다 : JQuery와 핸들러에서

$('.dialog_link_add').click(function(){ 
    var row_id = $(this).parent().parent().attr('id'); 
    return false; // <<============= 
}); 

, return false 두 가지 일을 :

  1. 기본 동작을 방지하십시오 (따라서 양식이 # 인 링크의 경우 창을 스크롤하지 않습니다).

  2. 이벤트가 DOM을 버블 링하지 않도록합니다. dom0이 스타일의 핸들러 (당신의 onclick)에서

, return false는 기본 동작을 방지 할 수 있지만 버블 링 멈추지 않습니다. More about return false in various types of handlers.
이 (편집 된 질문은 원래 없었다 JQuery와 핸들러에서 return false을 보여줍니다.)

+0

질문이 업데이트되었습니다. 문제는 IE에만 ​​있습니다 – Ales

+1

@Ales : 불행한 점이 있습니다. 첫 번째 시도에서 항상 질문을 올바르게 설명하십시오 (다른 사람들이 귀하의 질문에 중요한 시간을 제공하고 있기 때문에).이제 그는 그의 대답을 수정하거나 다시 써야 할 것입니다. +1 – Blaster

+1

@Ales : 내가 묻는 quesiton에 실제로 대답하지 않았다는 것을 별도로 깨달았습니다. 그래서 그렇게했습니다. 그러나 IE가 사용자가 제시 한 코드로 스크롤하는 이유는 없습니다. 더 유용한 일은 왜 일어나는지를 알아 내고 근본 원인을 다루는 것입니다. –

관련 문제