将函数传递给窗口小部件工厂窗口小部件,而不执行它

时间:2014-01-04 07:20:22

标签: javascript jquery jquery-ui

我正在jQueryUI小部件工厂中开发一个jQuery小部件,它需要一个函数作为参数传递给它。问题是每次创建一个新的widget实例时,传递的函数都会运行。这是我的代码:

       $(function(){
            $('a').addrow({
                inputs:[
                    {
                        name:'loo',
                        type:'submit',
                        click:function(){alert(1);}
                    }
                ]
            })

        })

$.widget('namespace.addrow', {
    options: {
        inputs:[]
    },
    _create: function () {
       alert(2);
    }
})

如您所见,我在inputs数组中传递了一个匿名函数,并且在文档准备好后立即执行alert(1);

1 个答案:

答案 0 :(得分:0)

我不知道jQueryUI小部件工厂,但如果您的匿名函数正在执行,请将其包装在另一个匿名函数中,如下所示:

click:function(){
  return (function(){
    alert(1);
  }) ;
}

这应该有效。

更新: 不使用return:

click:function(){
  this.click = (function(){
    alert(1);
  }) ;
}