Javascript 如何处理jquery中的控件绑定

Javascript 如何处理jquery中的控件绑定,javascript,jquery,Javascript,Jquery,我有一个关于jquery和DOM操作的问题。如何处理DOM控件,例如: 我必须从文本输入中获取值,以便通过以下方式实现: var SomeClass = function() { var control; this.setControl = function(c) { control = c; } this.getValue = function() { return control.val(); } } $(docu

我有一个关于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文件中,您有一个使用文本控件的类,在secound js文件中,您还需要来自该输入的值。你在干什么?您只需调用everytime$('#control')或创建第三个js文件,其中将有一个单独的“类”来操作此输入

在构造函数中移动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.
var$x=$('input');//保持对一组元素的引用。

我不认为这会给你带来任何额外的好处。不需要将控件绑定到类,只需直接绑定到var,在js中就可以了。传入构造函数确实有意义,但我想知道@sayume(请看顶部的注释)是否正确:“直接绑定到var,在js中就可以了”-也许创建包装控件的类根本不是一个好主意?也许每次需要时调用$('#xxx')都可以?使用var绑定控件是为了避免每次调用“$('#xxx')”,dom元素是临时存储的,您可以访问它,而无需每次搜索dom树,这就是想法。@reizals因为最重要的一点是“缓存”dom引用,在大多数情况下,jQuery对象本身已经足够好了。