Jquery Select2 plugin version check
Asked Answered
P

2

8

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

Phagy answered 1/3, 2016 at 12:57 Comment(0)
V
8

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

Vlissingen answered 13/2, 2017 at 19:2 Comment(1)
ty my friend, you save my hoursUmbra
P
4

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 );
Pelops answered 23/9, 2016 at 22:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.