2010-05-12 91 views
0

可有人請幫我這一個:的jQuery的jQuery UI的排序陣列

我重新發布該以防萬一人已經錯過了它,或者看看是否UI Sortables的東西超出了大多數人 - 所以我提前道歉: 經過對BigG的大量研究後,在這裏和各處發帖,我仍然沒有找到或得到答案或甚至看到我能理解的東西。好的,我承認我很喜歡用php,css,html等,但是js/jquery嗯,這對我來說都是新鮮事物 - 。所以我一直在尋找我能理解的事情/解釋。不幸的是,對於JQuery來說,99%的教程等都是以我無法理解的方式編寫的。根據其他論壇上的帖子等我知道我並不孤單我們正在尋找一個「假人」請不要說看看像「幫助」項目,如http://jqueryui.com/demos/sortable/#event-update - http://jqueryui.com/demos/sortable/#method-toArray - http://jqueryui.com/demos/sortable/#method-serialize,因爲他們不是像我這樣的人幫助項目。正如我在其他職位上所說,他們是「火星人」。

當使用UISortables在哪裏 - 以及如何將「serialize」放入JQuery函數?

我有4列類'.columm',每個都有一個唯一的ID - col1,col2,col3 & col4 -like。

<div class="column" id="col1(to col4)"> 

訂閱 Lorem存有悲坐阿梅德,consectetuer adipiscing ELIT

訂閱 Lorem存有悲坐阿梅德,consectetuer adipiscing ELIT

我可以拖動&放下來工作我現在需要把「最後」po劃分爲序列化數組。

這裏是我的代碼:

$(".column").sortable({ 
     revert: true, 
     scroll: true, 
     appendTo: 'body', 
     connectWith: '.column', 
     delay:200, 
     stop: function() { 
     $(".column").each(function(){ 
     var test = $(this).attr('id'); 

    alert(test); 

    // 
     //var myArray = $(this).sortable("serialize"); 

     }) 
    }, 
    revertDuration:50000, 
    scope:'scope', 
    opacity: 0.80, 
}); 

你會看到警告測試。我已經這樣做了,看看我能得到山坳裏的id爲警告和我可以,但我在哪裏可以把

.sortable(「連載」,[選項]) ?我該怎麼辦了4列創建1個單個序列化數組?

已經完成了如何在下一次加載頁面時設置訂單的方式? (OK是的,我做的意圖「存儲」序列化數組)

請幫助 - 謝謝

+0

不是一個答案,我知道 - 但我reccommend您安裝jQueryify插件Firebug的,還可以使用 的console.log(無論) 代替警報 - 這兩個東西真的幫了我,當我性學習的/ AM調試jQuery的。您也可以直接在Firebug的控制檯中輸入jQuery來執行它。 – calumbrodie 2010-05-24 13:46:58

回答

1

我猜你希望在排序已經停止抓取序列化的字符串?或者可能添加一個按鈕來提交?

我張貼a demo,並試圖涵蓋的那些方法可以做到這一點,我希望它能幫助:

$(function() { 
    $("#sortable").sortable({ 
     revert: true, 
     scroll: true, 
     appendTo: 'body', 
     connectWith: '.column', 
     delay:200, 
     stop: function(){ $(':button').trigger('click') }, 
     revertDuration:50000, 
     scope:'scope', 
     opacity: 0.80, 
    }); 

    $(':button').click(function(){ 
     var string = $("#sortable").sortable("serialize"); 
     alert(string); 
    }) 

}); 
0

答案以上都不行!至少,我還沒有能夠讓這種方法正確使用多列。它只適用於一個列表,就像上面鏈接的演示軟件一樣。

對於未來用戶的參考,你需要做這樣的事情,以達到預期的效果:

$(".column").sortable({ 
    connectWith: '.column', 
    update: function(event, ui){ 

     var out = ""; 

     $('.column').each(function(index){ 
      out += '{'; 
      out += $(this).attr('id') + ':'; 
      $("div", this).each(function(index){ 
       out += '{'; 
       out += $(this).attr('id') + ':';    
       out += '}'; 
      }); 
      out += '}'; 
     }); 

     alert(out); 

    } 
}); 

這將輸出的東西,然後可以解析服務器端是這樣的:

{column_1:{wid_1:} {wid_4:} {wid_5:} {wid_2:} {wid_3:}} {column_2:{wid_6:} {wid_7:} {wid_8:} {wid_9:}} { column_3:{wid_11:} {wid_10:} {wid_12:}}

0
$('#ul').sortable({ 
         opacity: 0.5, 
         items: '> li', 
         update: function(event, ui) { 
          var new_order = $(this).sortable('toArray'); 

          var o = { 
           ids: {} 
          }; 
          for (i = 0; i < new_order.length; i++) { 
           if (new_order[i] !== undefined) { 
            o.ids[i] = new_order[i]; 
           } 
          } 

          console.log(o); 
         } 
        });