我正在寻找创建函数/类的可能性

时间:2018-09-21 09:02:38

标签: jquery arrays function

我创建了一个“字段”功能来设置和获取字段的(HTML输入)值。

var field = {
    set: function (id, value) {
        if (typeof value === 'undefined') {
            value = '';
        }
        $('#' + id).val(value);
    }
    , get: function (id) {            
        return $('#' + id).val();
    }
}

这允许我设置/获取输入值:

field.set('myinput','hello');
var v = field.get('myinput');
alert(v);

到目前为止,一切都很好。现在,我正在寻找扩展“功能”以设置字段的值或属性(或将来修改高度,颜色,可见性等其他属性)的方法

语法应如下所示:

field.value.set('myinput','hello'); // myinput is the id of an input element
var v = field.value.get('myinput');

field.attr.set('myinput','name','value');
var v = field.attr.get('myinput','name');

构造这样的函数/类有什么可能性?

1 个答案:

答案 0 :(得分:1)

value上声明其他attrfield属性,并让每个setget函数返回相应的jQuery方法:

var field = {
  set: function (id, value) {
    if (typeof value === 'undefined') {
      value = '';
    }
    $('#' + id).val(value);
  }, get: function (id) {            
    return $('#' + id).val();
  },
  value: {
    set: (id, value) => {
      return $('#' + id).val(value);
    },
    get: (id) => {
      return $('#' + id).val();
    },
  },
  attr: {
    set: (id, attrib, value) => {
      return $('#' + id).attr(attrib, value);
    },
    get: (id, attrib) => {
      return $('#' + id).attr(attrib);
    },
  },
};
field.value.set('foo', 'newinput');
field.attr.set('foo', 'name', 'def');
console.log(field.attr.get('foo', 'name'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="foo" name="abc">