2016-11-01 14 views
0

一度追加します。私はそれをきれいにしたい事業部は、私は、次のコードを持っていた

ので、私はこれを試してみました:

var $accordionOption = $('<div />', { 
     "class": "option", 
     "data-select": 'option', 
     "data-action": 'makePie' 
    }); 

    switch (caseType) { 
     case "dates": 
      $.each(array.reverse(), function (index, arr) { 
       $accordionOption.text(arr); 
       $accordionOption.appendTo($accordionOptionContainer); 
      }); 
      break; 
     case "cohort": 
      $.each(array, function (index, arr) { 
       $accordionOption.text(arr); 
       $accordionOption.appendTo($accordionOptionContainer); 
      }); 
      break; 
     case "period": 

      $.each(array, function (index, arr) { 
       $accordionOption.text(arr); 
       $accordionOption.appendTo($accordionOptionContainer); 
      }); 
      break; 
    } 
    $accordionOption.click(function() { 
     cache.select(this); 
    }); 

しかし、私はそれが唯一のループで最後の配列項目を追加することに気づきました。これは毎回変数を再作成する必要があるためですか?それとも、追加する前にアコーディオンオプションにすべてを追加しているからですか?同じ変数を上書きするか?

私の最終的な解決策:


function getDiv() { 
     return $('<div />', { 
      "class": "option", 
      "data-select": 'option', 
      "data-action": 'makeTable' 
     }); 
    } 

    $.each(caseType == "dates" ? array.reverse() : array, function (index, arr) { 
     var $accordionOption = getDiv() 
       .text(arr) 
       .click(function() { cache.select(this) }) 
       .appendTo($accordionOptionContainer); 
    }); 
+0

だけ動作しませんでした。1. – BenG

答えて

1

どのようにシンプルなインラインについてdates

$.each(caseType == "dates" ? array.reverse() : array, function(index, arr) { 
    var $accordionOption = $('<div />', { 
    "class": "option", 
    "data-select": 'option', 
    "data-action": 'makePie' 
    }); 
    $accordionOption.text(arr); 
    $accordionOption.appendTo($accordionOptionContainer); 
    $accordionOption.click(function() { 
    cache.select(this); 
    }); 
}); 
+0

あなたのコメントでそれを変更しました。私はそれを試みます。私は他の2つのケースの "デフォルト"について考えましたが、これはよりクリーンです。 – Christian4423

1

あなたは同じ要素ごとに追加されます。

$('<div />') 

要素を作成し、これはこのようなものに同じものを毎回apended

変更です:唯一の違いはで配列であるかのように

function getDiv(){ 
    return $('<div />', { 
     "class": "option", 
     "data-select": 'option', 
     "data-action": 'makePie' 
    });} 

    switch (caseType) { 
     case "dates": 
      $.each(array.reverse(), function (index, arr) { 
       $accordionOption.text(arr); 
       $accordionOption.appendTo(getDiv()); 
      }); 
      break; 
     case "cohort": 
      $.each(array, function (index, arr) { 
       $accordionOption.text(arr); 
       $accordionOption.appendTo(getDiv()); 
      }); 
      break; 
     case "period": 

      $.each(array, function (index, arr) { 
       $accordionOption.text(arr); 
       $accordionOption.appendTo(getDiv()); 
      }); 
      break; 
    } 
    $accordionOption.click(function() { 
     cache.select(this); 
    }); 
+0

を作成するので、その、私はああ、あなたは良いしている – Christian4423

関連する問題