1

我正在编写一个插件,我需要“绑定”一个参数。有时我需要 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
        );
    });
};
4

1 回答 1

0

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

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

如果 param 是"checked",它将等同于this.checked

如果 param 是"val",它将等同于$(this).val()

等等。

查看括号符号条件运算符in 运算符

于 2012-06-14T10:38:24.123 回答