2014-01-23 5 views
1

, 당신은 이런 위에 드래그 유혹을 기반으로 클래스 (또는 함수)에 할당 할 수 있습니다 :jQuery Droppable : 'hover'속성을 트리거하기 위해 무엇을 듣고 있습니까? JQuery와의 낙하 할을 설정할 때

$(".myDroppable") 
    .droppable({ 
     hoverClass : 'droppableStyle' 
    }) 

간단한을 기본적으로 드래그 JQuery와 함께 잘 작동합니다.

그러나 나는 터치에 의존하는 솔루션을 개발하고 있으며 드래그 부분에 jQuery 드래그를 사용하지 않기로 결정했습니다. 그러나 여전히 Droppables를 사용하고 싶습니다.

질문 : 항목을 끌어다 놓을지 결정하기 위해 '듣기'기능은 무엇입니까? 집에서 마우스 이벤트를 끌 수있는 방법이 있습니까? 드래그 할 때 드래그 할 수있는 마우스를 드래그 할 수 있습니까?

답변

1

overout 이벤트가이 옵션을 트리거한다고 생각하지만 아직 테스트 할 수있는 draggable이없는 droppable을 사용해야합니다. accept 옵션을 사용하여 집에서 만든 draggable을 선택할 수 있으며 droppable은 그에 맞게 처리해야합니다.

$(".myDroppable") 
    .droppable({ 
     hoverClass: "droppableStyle", 
     accept: ".homeMadeDraggable" 
}); 

정확히 무엇이 일어나는지 말하기는 어렵지만 코드를 보지 않아도됩니다. 의 소스 코드를보고 api과 함께 표면 아래에서 일어나는 일과 그 사건이 작동하는지 여부를 명확히해야합니다.

 _over: function(event) { 

      var draggable = $.ui.ddmanager.current; 
      if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element 

      if (this.options.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { 
        if(this.options.hoverClass) this.element.addClass(this.options.hoverClass); 
        this._trigger('over', event, this.ui(draggable)); 
      } 

    }, 

    _out: function(event) { 

      var draggable = $.ui.ddmanager.current; 
      if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element 

      if (this.options.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { 
        if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass); 
        this._trigger('out', event, this.ui(draggable)); 
      } 

    }, 
+0

감사! 이것은 확실히 질문의 측면에서 작동하므로 이것은 좋은 정보입니다. 열쇠였던 것은 '수락'옵션이었습니다. 아아, 내 문제는 DIY draggables로 수행 한 터치를 통해 이중 draggables를 활성화하는 것과 관련이 있지만, 아 래로 Droppables는 같은 방식으로 나타납니다. 동시 드롭을 처리하도록 설정되지 않았습니다. 오 잘. –

+0

두 개의 draggables를 처리 할 수 ​​있어야합니다. 'accept' 옵션은 이것을 처리하기 위해 함수 콜백을 취할 수 있습니다 - [Dropable에서 여러 항목을 받아들이는 법] (http://jquery.10927.n7.nabble.com/How-to-accept-multiple-items-in -a-quot-Droppable-quot-element-td138053.html). 그냥 "터치를 통한 이중 draggables"라고 할 때 두 개의 손가락으로 동시에 끌린 두 개의 항목을 의미합니까? – catch22

+0

예, 목표가되었습니다 ... 동시에 두 개의 분리 가능한 draggables가 있습니다. 아쉽게도 jQuery UI가 마우스 이벤트에 의존하는 것이 원인입니다. 터치 펀치는 여전히 터치를 마우스 이벤트로 변환하며, jQuery 또는 브라우저 자체가 하나의 마우스 커서 만 인식합니다. 나는 'draggableTouch.js'로 드래그 부분에 대한 해결책을 찾았습니다. 이제는 내 자신의 droppable 논리를 조절할 필요가있는 것처럼 보입니다. –