2016-08-04 10 views
1

Ich habe eine Variable Ich gebe ihr Wert innerhalb einer Funktion jetzt möchte ich diesen Wert außerhalb dieser Variable, aber ich bekomme undefined, unten ist mein Code. Ich habe select2 auf meiner Seite whcih ich möchte mit einigen Daten bevölkern, hängt davon ab, welche Benutzerauswahl ist, ich erlaube einem Benutzer, einen Radioknopf zu wählen, und ich erhalte den Wert des Radioknopfes, um zu bestimmen, welche Daten im Auswahlmenü angezeigt werden. Jetzt nach meiner Codierung i var size_data innerhalb des Onclick-Ereignis Funktion alarmieren konnte, konnte aber nicht diesen Wert auf die select2 bekommen, wo ich es brauchen, jede Hilfe zu diesem Thema wirdWie bekomme ich Variablenwert außerhalb einer Funktion IN jquery

Hinweis verstanden werdenvar size_data ist eine globale Variable und die Variable dass hält verschiedene Größen sind auch globale Variable

siehe mein DEMO ON FIDDLE

var uk_size = [{ id: '8', text: '8' }, 
       { id: '10', text: '10' }, 
       { id: '12', text: '12' }, 
      ]; 
var us_size = [{ id: '4', text: '4' }, 
       { id: '6', text: '6' }, 
       { id: '8', text: '8' }, 
       { id: '10', text: '10' }, 
      ]; 
var eu_size = [{ id: '34', text: '34' }, 
       { id: '36', text: '36' }, 
       { id: '38', text: '38' }, 
      ]; 
var ng_size = [{ id: 'XS', text: 'XS' }, 
       { id: 'S', text: 'S' }, 
       { id: 'M', text: 'M' }, 
      ]; 
var size_data = ng_size; //default value; 
//alert(ng_size); 
    $("#size-style input:radio").on('click',function() { 
       //alert(ng_size); 

        var size_style =""; 
       size_style = $(this).val(); 
       if (size_style === "ng-size"){ 
         size_data = ng_size; 
       }else if(size_style === "uk-size"){ 
         size_data = uk_size; 
       }else if(size_style === "us-size"){ 
         size_data = us_size; 
       }else{ 
        size_data = eu_size; 
       } 
       alert(size_data);//can alert jquery object here 
    }); 



$('select.size-select').select2({ 
     name: 'size', 
     value: 'S', 
     data: size_data, 
     tags: "true", 
     placeholder: "Select size", 
     allowClear: true 
    }); 

Antwort

0

Sie die select2 mit Standardwert initialisieren kann und dann in Click-Ereignis Radio-Button können Sie seine Daten ändern wie unten:

https://fiddle.jshell.net/nnaL44ur/4/

$("#size-style input:radio").on('click', function() { 
    //alert(ng_size); 

    var size_style = ""; 
    size_style = $(this).val(); 
    if (size_style === "ng-size") { 
    size_data = ng_size; 
    } else if (size_style === "uk-size") { 
    size_data = uk_size; 
    } else if (size_style === "us-size") { 
    size_data = us_size; 
    } else { 
    size_data = eu_size; 
    } 
    alert(size_data); //can alert jquery object here 

    var $select = $('select.size-select'); //grabbing the select element 

    //fetching the previously set options at the first time initialization of select2 widget 
    var options = $select.data('select2').options.options; 

    $select.html(''); //clearing the previous dropdown options 
    // add new items to the options 
    options.data = size_data; 
    $select.select2(options); //updating the select2 widget with newer set of option data 

}); 

hoffen, dass es Ihnen helfen.

+0

Ich habe getan, was Sie sagten, aber es scheint nicht funktioniert, es ist nicht die Aktualisierung der Daten nach dem Klick Ereignis passieren, hier ist eine Geige, die ich erstellt https://fiddle.jshell.net/sammyzeal/nnaL44ur/3/ – sam

+0

@sam - bitte Schauen Sie sich diesen aktualisierten Ansatz an. – vijayP

+0

Vielen Dank, das funktioniert wirklich großartig, ich schätze es, wenn Sie mir die Zeit nehmen, mir zu helfen, obwohl ich den späteren Teil des Codes nicht verstehen kann. Ich werde froh sein, wenn du mir das erklären kannst. Danke – sam

Verwandte Themen