Extension des widgets jQueryUI sans conflit

Je suis intéressé par l’extension du comportement du widget de dialog de jqueryUI. Dans le passé, j’ai remplacé des fonctions comme ceci:

//Custom dragging $.ui.dialog.prototype._makeDraggable = function () {} 

Mais je pense que je devrais utiliser plutôt la fabrique de widgets pour créer un nouveau widget qui hérite de la boîte de dialog.

Je crois que le code devrait ressembler à ceci:

 (function($, undefined) { $.widget('cs.dialog', $.ui.dialog, { // definition of the widget goes here }); }(jQuery)); 

Ma question est la suivante: cela provoquera-t-il un conflit même si mon widget de dialog se trouve dans l’espace de noms cs et que jquery se trouve dans l’espace de noms ui? Je crois que jquery attache la méthode du widget à $ .fn, donc je le pense.

Si tel est le cas, à quoi sert l’espace de noms si vous avez toujours des conflits? Dois-je nommer mon widget “cs.csDialog” pour qu’il rest unique? J’ai l’impression qu’il manque quelque chose dans ma compréhension de cela.

Merci pour toute aide ou clarification.

$.widget() appelle $.widget.bridge() interne pour append la méthode du widget à l’object $ :

 $.widget.bridge(name, $[namespace][name]); 

Comme vous pouvez le constater, il ne fait que transmettre le nom du widget et la fonction de création. L’espace de nom sert uniquement à accéder à la fonction de création et ne fait pas partie du nom de la méthode.

Ainsi, dans votre cas, l’appel de votre dialog widget remplacera effectivement $.dialog() . La méthode originale $.dialog() restra toutefois disponible en tant que $.ui.dialog() et, de la même manière, la vôtre sera toujours disponible en tant que $.cs.dialog() .