2014-09-27 17 views
6

Ich habe ein JQfactory Plugin wie diesesAufruf eine Funktion Namespace

(function($, window, document) { 
    $.jqfactory('my.tooltip', { 

     /* My tooltip code */   

    }, false); 
}(jQuery, window, document)); 

Jetzt definiert unter der Annahme, ich Bootstrap Rahmen auch in meiner Seite aufgenommen haben, und ich möchte, dass meine Version von tooltip() nur rufen, nicht die Bootstrap-Version . Wie erreiche ich den Namespace $.my.tooltip?

+1

versuchen, wie diese verwenden können .. http://stackoverflow.com/a/ 19247955/2567813 –

+0

können Sie die noConflict() -Funktion von Jquery verwenden –

+0

@KarthikGanesan jQuery noConflict löst dieses Problem nicht, becau Es unterscheidet nur die verschiedenen jQuery-Versionen. Die Tooltip-Funktion ist nicht Teil des ursprünglichen jQuery-Codes, daher ist es nicht sinnvoll, jQuery noConflict zu verwenden, es sei denn, Sie möchten 2 verschiedene jQuery-Versionen laden und zwei verschiedene jQuery-Objekte verwenden, zum Beispiel "$" und "$$" . Dies würde definitiv später zu vielen Problemen führen, da der Entwickler einen Spaghetticode hat –

Antwort

1

Wie auf der Bootstrap Website erwähnt:

http://getbootstrap.com/javascript/#js-noconflict

// return $.fn.tooltip to previously assigned value 
var bootstrapTooltip = $.fn.tooltip.noConflict(); 

// give $().bootstrapBtn the Bootstrap functionality 
$.fn.bootstrapTooltip = bootstrapTooltip; 

Sie würden $.bootstrapTooltip verwenden, um die Bootstrap Tooltip aufrufen (wenn Sie jemals verwenden möchten). Sie können $.tooltip für etwas anderes verwenden.

jQuery noConflict löst dieses Problem nicht, da es nur die verschiedenen jQuery-Versionen trennt. Die tooltip-Funktion ist nicht Teil des ursprünglichen jQuery-Codes. Daher ist es nicht sinnvoll, jQuery noConflict zu verwenden, es sei denn, Sie möchten 2 verschiedene jQuery-Versionen laden und zwei verschiedene jQuery-Objekte "$" und "$$" verwenden . Dies würde später viele Probleme verursachen, da der Entwickler einen Spaghetti-Code haben wird.

0

Sie entweder $.widget.bridge wie diese

$.widget.bridge("my_tooltip", $.my.tooltip); 
$('#myTooltip').my_tooltip({}); 

oder tun dies

$.my.tooltip(null, $('#myTooltip2')); 

Kontrolle mehr Details here

+0

'$ .widget.bridge' ist Teil von jQuery UI. Das OP erwähnte, dass er Bootstrap und jQuery verwendet, aber er erwähnte nichts in Bezug auf jQuery UI. –

Verwandte Themen