This problem is “best” solved by using an anonymous function to pass-in the jQuery object thusly:
The Anonymous Function Looks Like:
<script type="text/javascript"> (function($) { // You pass-in jQuery and then alias it with the $-sign // So your internal code doesn't change })(jQuery); </script>
This is JavaScript’s method of implementing (poor man’s) ‘Dependency Injection’ when used alongside things like the ‘Module Pattern’.
So Your Code Would Look Like:
Of course, you might want to make some changes to your internal code now, but you get the idea.
<script type="text/javascript"> (function($) { $.fn.pluginbutton = function(options) { myoptions = $.extend({ left: true }); return this.each(function() { var focus = false; if (focus === false) { this.hover(function() { this.animate({ backgroundPosition: "0 -30px" }, { duration: 0 }); this.removeClass('VBfocus').addClass('VBHover'); }, function() { this.animate({ backgroundPosition: "0 0" }, { duration: 0 }); this.removeClass('VBfocus').removeClass('VBHover'); }); } this.mousedown(function() { focus = true this.animate({ backgroundPosition: "0 30px" }, { duration: 0 }); this.addClass('VBfocus').removeClass('VBHover'); }, function() { focus = false; this.animate({ backgroundPosition: "0 0" }, { duration: 0 }); this.removeClass('VBfocus').addClass('VBHover'); }); }); } })(jQuery); </script>