2

我有一个关于 jquery 和 DOM 操作的问题。您如何处理 DOM 控件,例如

我必须从文本输入中获取价值,所以我可以通过以下方式:

var SomeClass = function() {
    var control;

    this.setControl = function(c) {
        control = c;
    }

    this.getValue = function() {
        return control.val();
    }
}

$(document).ready(function() {
    var sc = new SomeClass(); // of course control could be passed in contructor as well
    sc.setControl($('#CONTROL'));
    console.log(sc.getValue());
});

或者

var SomeClass = function() {
    var control = $('#CONTROL');

    this.getValue = function() {
        return control.val();
    }
}

$(document).ready(function() {
    var sc = new SomeClass();
    console.log(sc.getValue());
});

你有什么意见?什么更好,或者这可能是一堆垃圾,因此最好的解决方案是什么。请不要把我送到骨干、脊椎等我只对 jquery 感兴趣。

最好的!

编辑:

你是从 UI 中分离逻辑还是混合它?更复杂的例子

在 js 文件中,您有一个使用文本控件的类,在第二个 js 文件中,您还需要来自此输入的值。你在做什么?您只需每次调用​​ $('#control') 或创建第三个 js 文件,其中将是一个单独的“类”来操作此输入?

4

1 回答 1

1

在构造函数中移动 setValue() 会更有意义:

SomeClass = function(c) {
    var control = c;

    return {
        getValue: function() {
            return control.val();
        }
    }
}

var x = new SomeClass($('input'));

alert(x.getValue());

但是,我不确定这种信息隐藏的价值有多大。也许作为某种视图包装。

在许多情况下,您不需要此包装器,因此只需:

var $x = $('input'); // keep reference to a bunch of <input> elements.
于 2013-05-08T07:12:29.643 回答