2017-03-10 1 views
0

#content divには、ユーザーがドラッグして並べ替えることができるブロックがあります。 各ブロックには多くのノードが含まれている場合があります。各ブロックの下に、 "data-node-id"属性を含むare要素。私はドラッグソート後に注文を取得する関数を作成したい。この機能はクリックボタンから実行できます(ソート変更ごとに実行する必要はありません)。 http://orbitcoins.website/demos/demo%20-%20json_nodes_diagram/nodes_diagram_serverfile.phpHTML要素のすべてのデータ属性の順番を取得

だから私はこの順序で要素を持っている、のは言わせて:ここで

は私のページです

order = {1,2,3,4,5}//block1:{1}, block2:{2}, block3:{3,4,5} 

第二と第三のブロックの順番を変更した後、この機能を実行するとき、我々

new_order = {1,3,4,5,2}//block1:{1}, block2:{3,4,5}, block3:{2} 

JQueryまたはJavaScriptを使用しても差はありません。

+0

使用 'javascriptのPHP jqueryのHTML css'と試してみます。 – JustOnUnderMillions

+0

あなたは正確に何をしたいですか?質問は不明です。 –

+1

** JSのオブジェクトには順序がありませんが、代わりに[配列](https://developer.mozilla.org/docs/Web)を使用してください。/JavaScript/Reference/Global_Objects/Array) 'order = [0,1,2,3]') – evolutionxbox

答えて

0

まあ、@Andreasはコメントで解決策を掲載しています

$("[data-node-id]").map(function() { return +this.getAttribute("data-node-id"); }).get() 

このソリューションは、私には完璧です!それはまさに私がしたいものです。

クレジットは@アンドレアスになります。このスニペットで

+0

ES6: 'Array.from(document.querySelectorAll(" [data-node-id] "))。マップ(n => + n.getAttribute("データノードID "));' – Andreas

+0

ES5: 'var要素= document.getElementsByClassName( "パネル成功");関数getOrder(){var order = []; for(var i = 0; i Andreas

+0

実際には、要素全体ではなく「data-node-id」だけが必要です。あなたの最初のソリューションは、まさに私が必要としているようです。だから私はあなたの最初の解決策を保つでしょう。 –

0

、あなたが定義された順序ですべてのブロックをチェックし、実行の終わりに含まれる値を取得することができます:

// all the blocks you have 
    $blocks = array(1, 2, 3); 

    // all the elements they contain 
    $blocks[1] = array(1); 
    $blocks[2] = array(2); 
    $blocks[3] = array(345); 

    // the new block order you will get 
    $new_order = array(1, 3, 2); 

    // initialize the new blocks order 
    $new_blocks = array(); 

    // for every block of the new order 
    foreach ($new_order as $block) { 

     // add to the new blocks order the content of that block 
     array_push($new_blocks, $blocks[$block]); 

    } 

    // for each new block obtained 
    foreach ($new_blocks as $block) { 

     // and for every node inside 
     foreach ($block as $item) { 

      // print it out 
      var_dump($item); 

     } 

    } 

    // new_blocks is the structure you are searching for 
+0

ありがとうございますが、@アンドレアスはマップを使用して、簡単なコードで必要なものを提供し、ブロックをループする必要はありません。 –

関連する問題