2013-06-26 5 views
0

기본 질문 : 하나 이상의 인수가있는 함수가 있습니다. 어떻게 함수 내부에서 마우스 위치를 검색 할 수 있습니까? 내가 의미하는 것을 명확히하는 몇 가지 코드가 있습니다.추가 인수를 사용하여 함수 내에서 마우스 위치 검색

$(element).on("mousedown",checkDragDropEdit); 

function checkDragDropEdit() { 
    if($('.editing').length > 0) { 
     $('.editing').css('border','3px solid red'); 
     return 
    } else { 
     var oldMousePos = checkMousePos(); 
     $(this).bind("mouseup",function(e) { 
      var newMousePos = [e.pageX,e.pageY]; 
      if(oldMousePos[0] == newMousePos[0] && oldMousePos[1] == newMousePos[1]) { 
       //makeEditable($(this)); 
       edit($(this)); 
       $(this).off("mousedown",checkDragDropEdit); 
      } 
      $(this).unbind("mouseup"); 
     }); 
    } 
} 

function checkMousePos(e) { 
    return [e.pageX,e.pageY]; 
} 

이 기능이 작동하지 않으면이 함수는 "Uncaught TypeError : 속성 'pageX'가 정의되지 않음"을 반환합니다.

나는이에 "checkDragDropEdit"기능의 일부를 교환하는 경우, 내가 좌표를 얻을 수있는 반면 :

function checkDragDropEdit(e) { 
    ... 
    var oldMousePos = [e.pageX,e.pageY]; 
    ... 
} 

기능은 다음과 같이 행동하고 내가 제대로 검색 할 수있는 방법을 왜 누군가가 나에게 설명 할 수 상단 함수 안에 마우스 위치? 그 이유는, 그 함수에 더 많은 인수를 전달하고 싶지만 실행 된 후에도 여전히 마우스 위치를 검색 할 수 있기를 원합니다.

덕분에 많은

답변

1

이 있기 때문에 그것은 Event 개체를 기반으로 위치를 읽고이 줄

var oldMousePos = checkMousePos(); 

function checkMousePos(e) { 
    return [e.pageX,e.pageY]; 
} 

이다. 그러나 간단한 함수 호출입니다.

나는 이벤트 객체에 대한 자세한 조금 읽어했다 ... 방법에

function checkDragDropEdit(e) { 

    ... // Pass the event object 
    var oldMousePos = checkMousePos(e); 
+0

덕분에 많은 이벤트 객체를 전달합니다 - 나는 그것이 어떻게 작동하는지 완전히 오해했다 그리고 그것은 함께 어떻게 전달됩니다. 감사합니다. Sushanth. – tricon

+0

한 가지 더 물어 볼 수 있을까요? 한 가지 주위에 머리를 맞출 수 없습니다 - 왜 이것이 작동하지 않습니다 : function checkDragDropEdit (e) {(console.log (e)})(); } 이것은 다음과 같습니다. function checkDragDropEdit (e) {var oldMousePos = mousePos (e); function mousePos (e) {console.log (e)}} 기본 질문에 사과드립니다.) – tricon

+0

그건 논리적입니다 ... 덕분에 1 톤! – tricon