2010-04-22 83 views
1

我想基於原型框架jQuery框架更新下面的JavaScript代碼:的Javascript轉換,從原型到jQuery的

Event.observe(window, 'load', function() { 
    $$('.piece').each(function(item) { 
    new Draggable(item, { revert: true }); 
    }); 

    $$('.cell').each(function(item) { 
    Droppables.add(item, { 
     accept: 'piece', 
     onDrop: function(piece, cell) { 
     cell.descendants().each(function(item) { item.remove(); }); 

     piece.remove(); 
     piece.setStyle({ 'top': null, 'left': null }); 
     new Draggable(piece, { revert: true }); 
     cell.appendChild(piece); 
     } 
    }); 
    }); 
}); 

腳本的第一部分是易於轉換:

$(function() { 
    $('.piece').draggable(
    { 
     evert: true 
    } 
); 

    $('.cell').droppable(
    { 
     /* But here, it's more difficult. Right? ;) 
     ... */ 
    } 
    }); 
}); 

你有想法嗎?代碼的任何部分都是受歡迎的。非常感謝。

+0

大部分是相似的。 droppable函數有一個像Prototype這樣的接受屬性,onDrop就是所謂的「drop(event,ui)」(事件)。對於「drop」,$(this)將引用可丟棄的項目,「ui.draggable」是可拖動的元素(或者你所稱的片段)。 至於你在這裏試圖完成什麼,我不太清楚我的理解......你只是試圖將可拖動對象的HTML放入可丟棄對象中嗎? – RussellUresti 2010-04-22 21:01:18

+0

實際上,這是一個下棋的Web應用程序(在Twitter上)。這是該項目的存儲庫:http://github.com/jsanders/twitchess – moshimoshi 2010-04-22 21:05:19

回答

0

這是我有:

jQuery(document).ready(function(){ 
    $('.piece').draggable({ 
     revert: true 
     , scope: 'piece_and_cell' 
    }); 

    $('.cell').droppable({ 
     drop: function(event, ui) { 
      var cell = $(this); 
      cell.empty(); 
      var piece = ui.draggable.detach() 
      piece.css({top:null, left: null}).appendTo(cell); 
      piece.draggable({ 
       revert: true 
       , scope: 'piece_and_cell' 
      }) 
     } 
     , scope: 'piece_and_cell' 
    }); 
});