2017-07-22 4 views
0

大きなif、else、else、else typeステートメントを実行したくありません。私は基本的に、idの文字列を取得し、その文字列を関数として呼び出すExcelIR INDIRECT()と同等のものを探しています。 jQueryがスピナーをベースにしているクラスの入力があります。 jQuery、get .attr( "id")、IDに基づいて関数を呼び出す

$(document).ready(function(){ 
    var primary = $(".spinnerPrimary"); 
    var secondary = $(".spinnerSecondary"); 
    primary.spinner({ 
     min: 7, 
     max: 20, 
    }); 
    primary.spinner("value", 10); 
    secondary.spinner({ 
     min: -4, 
     max: 4 
    }); 
    secondary.spinner("value", 0); 

MAX、MINなどをやって、私は、様々なスパンコンテナを更新する関数を呼び出すスピンイベントをやりたいです。すべてのスパンを更新する関数を実行したり、大きなif/else/else case-typeステートメントを実行したりすることができます。オプションがあります。私が本当に望むのは、idを this.attr("id")で引っ張って、それぞれのスピナーにその入力スピナーのIDに基づいてスピンが設定されていることです。つまり、定義された関数の名前に対応する同じ文字列です。上記の例では

$(document).ready(function(){ 
    var primary = $(".spinnerPrimary"); 
    var secondary = $(".spinnerSecondary"); 
    primary.spinner({ 
     min: 7, 
     max: 20, 
     spin: //fancy code 
    }); 
    primary.spinner("value", 10); 
    secondary.spinner({ 
     min: -4, 
     max: 4, 
     spin: //same fancy code 
    }); 
    secondary.spinner("value", 0); 

    function x() { 
     //fancy equation code 
    }; 

    function y() { 
     //fancy equation code 
    }; 

idが「×」であれば、私は)それは関数xを(呼び出したい、ID =「Y」は、私がどのように探しているなどのy()を呼び出し、この特定のシナリオを実行する方法ではなく、別の方法(既知のIDと対応する関数に基づいてif/elseを実行するなど)を実行します。私が言及した2つの選択肢がそれを行うための唯一の方法であるならば、それもそうです。

別の質問の重複:非常に似ていますが、マッピング機能を使用してスピンナに適用する必要があります。 jQueryの新機能では、多面的な(?)質問もありました。

答えて

0

はそれをこの方法を試してみてください:

// Setup your functions as a map, so they are easily 
 
// accessible by name. 
 
var fns = { 
 
    x: function(){ 
 
    console.log('running x!'); 
 
    }, 
 
    y: function(){ 
 
    console.log('runnning y!'); 
 
    } 
 
} 
 

 
var primary = $(".spinnerPrimary"); 
 

 
primary.spinner = function(options){ 
 
    // Tie your `spin` function to the spinner. 
 
    console.log('spinning'); 
 
    options.spin(); 
 
} 
 
primary.spinner({ 
 
    min: 7, 
 
    max: 20, 
 

 
    // Assign `spin` to one of the `fns` from above 
 
    // using `id` as a key. 
 
    spin: fns[primary.attr('id')] 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="x" class="spinnerPrimary"></div>

+0

素晴らしい、ありがとうございました!これは私が慣れ親しんでいるものではなく、より多くの研究のための時間ですが、正しい方向に私を指摘しました。ありがとうございました!! –

関連する問題