How to check jQuery plugin and functions exists?

JavascriptJquery PluginsJqueryMarquee

Javascript Problem Overview


I have a plugin in some pages but in some other pages I don't want it so I didn't reference its script file.

How to check if the plugin functions exist before using it.

In my case I am using this plugin: and I use it like this:

$('#marquee-inner div').marquee('pointer').mouseover(function() {
	$(this).trigger('stop');
}).mouseout(function() {
	$(this).trigger('start');
}).mousemove(function(event) {
	if ($(this).data('drag') == true) {
		this.scrollLeft = $(this).data('scrollX') + ($(this).data('x') - event.clientX);
	}
}).mousedown(function(event) {
	$(this).data('drag', true).data('x', event.clientX).data('scrollX', this.scrollLeft);
}).mouseup(function() {
	$(this).data('drag', false);
});

What I want is to make a check before calling this marquee function if it exist or not.

Javascript Solutions


Solution 1 - Javascript

if ($.fn.marquee) {
    // there is some jquery plugin named 'marquee' on your page
}

Solution 2 - Javascript

You can also do this. Let me take jQuery marquee example.

This is good if you are using only jQuery.

if($().marquee) {
	// marquee is loaded and available
}

OR

if($.fn.marquee !== undefined) {
	// marquee is loaded and available
}

Similar to above but Safe when you are using other JS frameworks Mootools etc.

if(jQuery().marquee) {
	// marquee is loaded and available
}

OR

if(jQuery.fn.marquee !== undefined) {
	// marquee is loaded and available
}

Solution 3 - Javascript

Slightly better:

if ($.isFunction($.fn.marquee)) {
    // ...
}

Maybe a little overkill, but this will ensure that it's at least a function.

Update January 2021:

Since jQuery.isFunction() has been deprecated as of version 3.3, the easiest & recommended way to check this is now:

if (typeof $.fn.marquee === "function") {
    // ...
}

Note that this may not be enough for certain very old browsers—see the $.isFunction() implementation for details.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAmr ElgarhyView Question on Stackoverflow
Solution 1 - JavascriptMatt BallView Answer on Stackoverflow
Solution 2 - JavascriptMadan SapkotaView Answer on Stackoverflow
Solution 3 - JavascriptNoyoView Answer on Stackoverflow