2012-03-23 20 views
1

JavaScript/JQueryについてはまだかなり初心者だと思います。どのように私は再利用することができる方法/機能にこれを屈折について行くだろう。Jquery/Javascriptのリファクタリングの基礎

$.getJSON('@Url.Action("GetLabNames", "Micro")', null, function(j) { 
    var options = ''; 

    for (var i = 0; i < j.length; i++) { 
     if (elem.value == j[i].Description) { 
      options += '<option selected="selected" value="' + j[i].Lab_LN_ID + '">' + j[i].Description + '</option>' 
     } else { 
      options += '<option value="' + j[i].Lab_LN_ID + '">' + j[i].Description + '</option>' 
     } 
    } 

    $(elem).html(options); 

    $(elem).multiselect({ 
     multiple: false, 
     header: "Select an option", 
     noneSelectedText: 'Lab Name', 
     selectedList: 1, 
     minWidth: 150 
    }); 

}); 

私は

CreateMultiSelect(elem, controller, action, text, value); 

のような機能のものを持って期待していた。しかし、私は、関数など(Lab_LN_ID、説明)にオブジェクトのプロパティを渡し、それらのテキスト(例えば作ることができない「Lab_LN_ID」 、 '説明')、明らかに機能しない、と私はそれについて行く方法がわからない?

答えて

2

なぜ共通のプロパティ名を持つjsonオブジェクトを返さないのですか?これは大幅に簡素化されます。

例えば

[{Text: 'text', Value: '1'},{Text: 'text', Value: '1'}] 

次に、あなたは非常に簡単にすべてのあなたのオプション項目を作成することができます。

$('<option />', { value: item.Value, text: item.Text }); 
+0

猫をスキンケアする方法は複数ありますが、そのことを念頭に置いておきます。私の好奇心のために、私はMVC/JQueryなどに関してまだ多くのことを学んでいるので、もし可能ならjavascriptでこれがどのように行われるのか知りたいのですが... –

+0

あなたが提案したルートを終えて、 。ありがとうございます –

+0

私は[j] ['Lab_LN_ID']構文を使用すると、via stringでプロパティを渡すことができます。 – Betty