【问题标题】:I'm looking for possibilities to create a function/class我正在寻找创建函数/类的可能性
【发布时间】:2019-02-25 15:46:51
【问题描述】:

我创建了一个“字段”函数来设置和获取字段的(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');

有什么可能构造这样一个函数/类?

【问题讨论】:

  • 您希望var v = field.attr.get('myinput'); 做什么?您没有传递属性名称?
  • 不太确定您想要实现什么,但简短的回答是您已经拥有此功能:$
  • @CertainPerformance:示例已更正。 var v = field.attr.get('myinput','name');

标签: jquery arrays function


【解决方案1】:

field 上声明额外的valueattr 属性,并让每个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">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多