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

标签 javascript jquery binding

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

最佳答案

您可以传递诸如 "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 notation , conditional operatorin operator

关于javascript - 可变属性作为​​ jQuery 插件中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11031236/

相关文章:

javascript - 使用浏览器扩展突出显示来自网站的链接

java - selenium:如果同一页面上已存在具有相同名称、值、id 的相同按钮,如何选择要单击的按钮?

JavaScript 转换不起作用

jquery - 单击显示带有图像的弹出窗口

jquery - 防止第一个元素之前的可排序下降

angularjs - 在 AngularJS 中的另一个 Controller 中使用 Controller

Ruby C 绑定(bind)与系统调用的 Ruby 包装器

javascript - 为什么 Javascript 函数调用在更改隐藏代码的可见性后不起作用

javascript - 客户端 Javascript 的类似 Express 的路由

.net - 如何拦截自定义处理的 WPF 绑定(bind)