2014-01-23 32 views
1

當建立一個jQuery的投擲的,你可以將基於一個可拖動盤旋在它這樣一個類(或功能):jQuery Droppable:觸發'懸停'屬性是在監聽什麼?

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

簡單,默認使用jQuery的偉大工程拖動。

但是,我正在研究依賴於觸摸的解決方案,因此,我選擇不使用jQuery拖動器來拖放部分。不過,我仍然想使用Droppables。

問題:爲了確定一個項目是否被拖拽到了什麼地方,可以「傾聽」什麼?有沒有什麼辦法可以觸發我的家中的一些鼠標事件,因爲它被拖拽,表示droppable的hoverClass?

回答

1

我相信overout事件觸發這個選項,但我還沒有使用沒有可拖動的droppable來測試這個。您可以使用accept選項來選擇您的自制可拖動,並且可拖拽應該相應地對待它。

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

沒有看你的代碼,雖然很難說出究竟會發生什麼。看看droppable的源代碼,結合閱讀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拖動器完成的,但是,唉,它看起來像Droppables是一樣的......沒有設置來處理併發滴。好吧。 –

+0

你應該能夠處理兩個可拖動的。 'accept'選項可以使用函數回調來處理這個問題 - [如何接受droppable中的多個項目](http://jquery.10927.n7.nabble.com/How-to-accept-multiple-items-in -a-QUOT-可投放-QUOT元件-td138053.html)。要說清楚,當你說「通過觸摸雙重拖動」時,你的意思是兩個手指同時拖動兩個項目嗎? – catch22

+0

是的,這是目標...同時有兩個單獨的可拖動。唉,似乎jQuery UI對鼠標事件的依賴是罪魁禍首。 Touch-punch雖然很棒,但仍可以將觸摸轉化爲鼠標事件,並且它看起來或者是jQuery,或者更可能是 - 瀏覽器本身,只能識別一個鼠標光標(這是有道理的)。我找到了一個解決方法,用「draggableTouch.js」拖動部分。所以現在看起來我需要推出我自己的可放置邏輯來適應。 –

相關問題