Jquery:小部件的初始功能

时间:2010-11-02 13:57:50

标签: javascript jquery jquery-ui widget

这里我有一个小部件,我想在#slider.slider();之后调用一个函数。什么是代码?

$( "#slider" ).slider({  

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

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

});

1 个答案:

答案 0 :(得分:1)

为什么不做呢

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

或者,您可以将.slider()电话打包在您自己的迷你扩展程序中:

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

然后你可以说

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

显然,“滑块”可以是通用的:

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

然后您可以为“对话框”执行此操作,例如:

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

正如@mikerobi指出的那样, 时,你想要调用初始化函数并不是100%清除。大多数小部件都有一个“onFoo”类型的回调函数,当小部件被激活时调用它(对于给定的小部件意味着什么)。如果你只想在第一次调用时初始化,你可以让回调成为一个闭包,跟踪它是否曾经完成初始化工作。如果它检测到它已经完成它,它就会返回。