可变属性作为​​jQuery插件中的参数

时间:2012-06-14 10:30:40

标签: javascript jquery binding

我正在编写一个插件,我需要“绑定”一个参数。 有时我需要this.checked的值,但有时它是$(this).val()我需要的东西,当我需要检查其他属性时有角落。

我需要一个初始化的“输入参数”,以某种方式确定要检查值的内容。

我可以用eval做到这一点,但它是邪恶的。 我可以用开关盒做到这一点,但我不确定我能为一切做好准备。

这样做的最佳方式是什么?

$.fn.formSwitch = function (options) {

    var settings = $.extend({
        visibleholder: '#visible_holder',
        hiddenholder: '#hidden_holder',
        reparseform: this.closest('form')
    }, options);



    this.change(function () {
        switchFormPart(settings.visibleholder, 
            settings.hiddenholder, 
            ********this.checked, *********** <- I would like this as a parameter
            settings.reparseform
        );
    });
};

1 个答案:

答案 0 :(得分:0)

您可以传递"checked""val"之类的字符串作为参数,然后:

this.change(function () {
    switchFormPart(settings.visibleholder, 
        settings.hiddenholder, 
        param in this ? this[param] : $(this)[param](),
        settings.reparseform
    );
});

如果参数为"checked",则相当于this.checked

如果参数为"val",则相当于$(this).val()

等等。

查看bracket notationconditional operatorin operator