so i'm attempting work within constraints of request , have made progress bet still getting locked up. here's scenario:
currently, i'm working website depends on jquery v1.4.2. since access i'm given on backend ability inject content cms driven page, had been sideloading jquery 1.11 support needed functionality.
flash forward yesterday , made aware client's dev team has bundled v1.4 , v1.11 , has noconflicted 1.11 $$.
(function() { $$ = $.noconflict( true ); // move jquery 1.11.0 $$ , restore $ jquery 1.4.2 })(); // use following self-invoking anonymous function // when need run code depends on $ = jquery 1.11 // otherwise, can access jquery 1.11 $$ // (function( $ ){ // inside here $ jquery 1.11 // , jquery 1.4.2 out of scope // })( $$ );
since scripts (and plugin attempting load page) injected in middle of page , jquery v1.4 , v1.11 @ bottom of page, loading way:
(function checkforjquery(){ if ('$$' in window) { (function($) { console.log('success'); $.getscript("myplugin.jquery.js", function(){ $( ".devices").myplugin({ // devices - array | productid prop1: ["prod3960155", "prod3640151", "prod3640152", "prod5530141"], prop2: "attribute", prop3: "attribute" }); }); })($$); } else { console.log('not yet'); window.settimeout(checkforjquery, 1000); } })();
so issue i'm having if use:
(function( $ ){})( $$ );
i nothing - plugin never initializes. however, if use:
(function( $ ){})( jquery );
it work, don't have access latest api. ideas why 1 work , not other?
for clarity, i'm using jquery plugin boilerplate , starts this:
;( function( $, window, document, undefined ) { } )( jquery, window, document );
any insights appreciated!
thanks, joe
the reason script won't work not call of plugin, creation.
to explain, code below uses second instance $$
search elements class .devices
, starts plugin myplugin
. nothing else.
(function($) { $(".devices").myplugin(); })($$);
but have registered plugin old version. reason why workes, when use jquery
instead of $$
on code above.
to use $$
jquery instance in plugin, have set on creation too. there has passed in jquery
. , because used noconflict
, name jquery
belongs old version of jquery.
to register plugin right instance, have change $$
on creation too.
;(function($, window, document, undefined){})($$, window, document);
to make plugin working on other installations, can add jquery
fallback. if use plugin on other sites , don't want change every time.
;(function($, window, document, undefined){})($$ || jquery, window, document);
thats it.
Comments
Post a Comment