如何传递参数?

时间:2012-05-06 21:38:25

标签: javascript jquery jquery-ui

解决,Yohoo

我有一个对话插件,就像这样

$("#dialog").dialog({
  click:function(){
    alert(1);
  },
  'class':"dialog"
});

以下代码是一段主代码,它循环选项并检查key是否为jQuery函数然后调用它,否则将其设置为属性

$.each(options,function(key,val){
   if(key in $.attrFn){
    $('#div')[key](val);    // I want pass arguments to this function
    // equal $('#div').click(function(args){
    //     alert(1);
    // });
    // this is like jQuery ui dialog buttons options
   } else {
    $('#div').attr(key,val);
   }
});

我想传递一些参数给函数,但我不知道怎么做?

示例:

$("#dialog").dialog({
  click:function(dialog){
    dialog.disAppear();
  },
  'class':"dialog"
});

解决

$.each(v,function(q,w){
    if(q in $.attrFn){
            //console.log(dialog);
            b[q](function(){
                w(dialog);
            });
    } else {
        b.attr(q,w);
    }
});

2 个答案:

答案 0 :(得分:1)

以下是http://jsfiddle.net/Jams/hcTTH/

Dialog的工作示例

有一个关于SO的问题可能符合您的要求How to pass a parameter to jQuery UI dialog event handler?

其他人在这里

Passing data to a jQuery UI Dialog

答案 1 :(得分:0)

我们可以使用JavaScript IIFE传递参数,因此我们可以: 我把它包装到function(){},以防止自我执行

$.each(v,function(q,w){
    if(q in $.attrFn){
        if($.isFunction(w)) {
            b[q](function(e){
                w(e,dialog);
            });
        } else b[q](w);
    } else {
        b.attr(q,w);
    }
});