Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jquery Select2 plugin version check

In my project I check if the Select2 plugin was loaded in this way

if (jQuery().select2)

But now I will try to verify what kind of version (3.5.X or 4.X) of Select2 plugin was loaded. I thought maybe you could check if there is an option/function introduced in version 4.X that is not present in the version 3.5.X. According to you, is it doable? How might I do it? Thank you

like image 392
Paolo Rossi Avatar asked Mar 01 '16 12:03

Paolo Rossi


2 Answers

There is a new isOpen method in Select2 4.0.

You can use something like this in your developer toolbar:

try {
    $("#a-select2-element").select2('isOpen');
    'select2 v4.x';
} catch(e) {
    'select2 v3.x';
} 

Tested with Select2 v3.5.3 and v4.0.3

like image 61
Pavel K Avatar answered Oct 18 '22 08:10

Pavel K


The events differ for Select2 v3 & v4! You could simply call the events of either version to run your code for only that version. If an event doesn't exist, it will be ignored. If you need to test within the change event, which v3 & v4 have in common, have a look at the code below:

var $el = $('#your-element'),
    s2Version3 = false,
    s2Version4 = false;

$el.on( 'select2:opening', function() {
    // this event only works for v4
    s2Version4 = true;
});

$el.on( 'select2-opening', function() {
    // this event only works for v3
    s2Version3 = true;
});

$el.on( 'change', function() {
    if ( s2Version3 ) {
        // change things for v3
    } else {
        // change things for v4
    }
});

P.S. To check if a jQuery function is available, isFunction comes in handy.

var s2Exists = $.isFunction( $.fn.select2 );
like image 34
Marc Wiest Avatar answered Oct 18 '22 07:10

Marc Wiest