2014-09-03 4 views
1

여기에 JSFiddle이 있습니다 : http://jsfiddle.net/o5tupLcb/.jQuery의 draggable() 함수가 작동하지 않습니다.

내 문제는 왜 div가 끌리지 않는 이유입니까? $ (".drag")를 만들더라도 draggable(); switch 문 외부에있는 자체 선언문은 작동하지 않습니다.

는 여기에 몇 가지 jQuery의 :

$(document).ready(function() { 
    $(".drag").mousedown(function(e) { 
     switch (e.which) { 
     case 1: 
      $(this).toggleClass("mousedown"); 
      $(this).draggable(); /* This probably shouldn't be here */ 
     case 2: 
      break; 
     case 3: 
      break; 
     default: 
      break; 
     } 
    }); 

    $(".drag").mouseup(function(e) { 
     switch (e.which) { 
     case 1: 
      $(this).toggleClass("mousedown"); 
      $(this).draggable(); /* This probably shouldn't be here */ 
     case 2: 
      break; 
     case 3: 
      break; 
     default: 
      break; 
     } 
    }); 
}); 

은 이미 jQuery를 UI를 가져올 시도하고 아무 일도 있습니다.

편집 : 바뀌 었습니다. 잘못된 것을 가져 왔습니다. 또한 draggable() 함수는 switch 문에서 꺼내서 아래에 넣으면 더 잘 작동합니다.

+2

** 처리되지 않는 오류 : 미정 **는 기능하지 않다. 당신은 jQuery UI를 포함하지 않았다. jQuery는 물론 – Ian

+1

나는 HTML 헤드에서 가져 오기를 시도했지만 여전히 단어는 사용하지 않았다. –

+0

아마도 맞을 것입니다. 드래그 가능성을 재발견하고 jQuery UI를 사용하려고합니다. 드래그 할 수있게하려면'$ ("selector"). draggable()'을 사용하십시오. 이벤트를 바인드하고 로직을 사용할 필요가 없습니다. – Ian

답변

1

jsfiddle (jQuery 및 jQuery UI 포함)에서 코드를 정리했습니다. 또한 html을 다음으로 변경했습니다 :

<div class="drag">Hello</div> 

이제는 (첫 번째 클릭 후) 작동합니다. 첫 번째 클릭 후 (그리고 다시 출시 한 후) 이벤트가 시작된 이후부터 의미가 있습니다.

http://jsfiddle.net/o5tupLcb/1/

+0

와우, 고마워! 이제 mousedown CSS 클래스가 바람직하지 않은 방식으로 번갈아 변경되므로 toggleClass를 편집하면됩니다. –

+0

네, 당신은 꽤 많이있었습니다. 당신이 jsfiddle에서 그것을 보여주는 방식이었던 것입니다. body 태그 안의 내용 만 넣고 body 태그 자체는 넣지 마십시오. 외부 리소스에서 jQuery UI 및 프레임 워크를 확인하십시오. –

+0

또한 클릭 (mousedown) 및 릴리스 (mouseup)인지 알기 때문에 addClass 및 removeClass 사용을 고려하십시오. 보다 구체적이고 "지연"에서 발생할 수있는 문제를 해결하는 데 도움이 될 수 있습니다. –

관련 문제