2017-12-06 11 views
1

에 발생합니다. mousedown().foo 테이블에서 발생했는지 어떻게 확인하나요? 이 경우 mouseDown은 콘텐츠 끌기를 취소하려면 false이되어야합니다. 나는 이것을 시도했지만 작동하지 않았다점검 mousedown() 이벤트 내가 <code>mousedown()</code>을 감지하고 내용 드래그를 초기화하는 데이 기능을 사용하고 특정 요소

 $("#mainDiv").mousedown(function() { 
      if($('.foo').mousedown()){ 
       mouseDown = false; 
      } 
      else{ 
       mouseDown = true; 
      } 
+0

:'경우 ($ (event.target) .closest ('foo는. 또한 로직 조금 정돈을 할 수 있습니다 ') .length) return;'핸들러 인수로'event'를 전달하기 때문에 다음과 같이 해보십시오 :'$ ("# mainDiv") mousedown (function (event) {if ($ (event.target) .closest ('.foo ') .length) return; // else not : 논리에 따라 ...});' –

답변

2

당신이 이벤트의 target을 확인할 수 있습니다 #mainDiv까지 버블 링 이벤트를 일으킨 요소를 확인합니다. 예를 사용하여 당신은 자식 요소는 (있는 경우) 이벤트를 트리거 한 클릭 핸들러 내부 필터링 할 수 있습니다

$("#mainDiv").mousedown(function(e) { 
    mousedown = !$(e.target).closest('.foo').length; 
}); 
+1

'mousedown =! $ (e.target) .closest ('. foo '). 길이;' –

+1

사실, 테이블 내의 셀을 클릭하는 상황을 커버합니다. 두 시나리오를 모두 포함하도록 업데이트 할 예정입니다. 예를 들어 경계에서 직접 테이블을 클릭 할 수도 있습니다. –

+1

하지만'! $ target.is ('. foo') &&'otherwise'를 제거해야합니다! $ target.closest ('. foo'). 길이는 의미가 없습니다 :) –