2010-11-02 4 views
1

Ici, j'ai un widget et je veux appeler une fonction #slider.slider();. Quel est le code?Jquery: fonction initiale d'un widget

$("#slider").slider({ 

    //initial function here. 
    alert("A"); 

    value: 50, 
    slide: function(event, ui) { 
      displaySlideValue(); 
    } 

}); 
+1

Il n'est pas clair si vous souhaitez que la fonction soit appelée. – mikerobi

+0

@mikerobi: quand le script charge le widget – Zebra

Répondre

1

Pourquoi ne pas simplement faire

$('#slider').slider({ ... }).each(function() { /* your code here */ }); 

Sinon, vous pouvez envelopper l'appel .slider() dans votre propre mini-extension:

$.fn.sliderWithInit = function(params, init) { 
    return this.slider(params).each(init); 
}); 

alors vous pourriez dire

$('#slider').sliderWithInit({ /* params */ }, function() { /* init code */ }); 

Évidemment « Curseur » pourrait être générique:

$.wrapWithInit = function(widgetName) { 
    $.fn[widgetName + 'WithInit'] = function(params, init) { 
    return this[widgetName](params).each(init); 
    }); 
}); 

Ensuite, vous pouvez le faire pour « dialogue », par exemple:

$.wrapWithInit('dialog'); 
$('#dialog').dialogWithInit({ /* dialog params */ }, function() { /* init code */ }); 

Comme @mikerobi souligne, ce n'est pas 100% clair quand vous voulez votre fonction d'initialisation à appeler. La plupart des widgets ont un rappel de type "onFoo" qui est appelé lorsque le widget est activé (quel que soit ce que cela signifie pour le widget donné). Si vous voulez juste initialiser le premier appel, vous pouvez simplement faire en sorte que le rappel soit une fermeture qui permette de savoir si le travail d'initialisation a déjà été effectué. S'il détecte que c'est déjà fait, il reviendra juste.

+0

Merci beaucoup! – Zebra