Javascript jQuery风格的getter和setter

Javascript jQuery风格的getter和setter,javascript,Javascript,我有一个构造函数下拉列表,它将数组作为参数。此参数将由附加到原型的方法使用。该参数是一个数组,应将其转换为jQueryoptionobjects的参数,该参数应为select元素的下拉菜单选项。目前我有: function Dropdown(data) { this.sel = $('<select>'); } Dropdown.prototype.options = function (options) { var self = this; //using $(t

我有一个构造函数
下拉列表
,它将数组作为参数。此参数将由附加到原型的方法使用。该参数是一个数组,应将其转换为jQuery
option
objects的参数,该参数应为select元素的下拉菜单选项。目前我有:

function Dropdown(data) {
    this.sel = $('<select>');
}

Dropdown.prototype.options = function (options) {
    var self = this; //using $(this) doesn't work either

    if ( !options ) {
        //if null return the current values of
        return self.sel.html();

    } else {
         //make a jQuery option object out of every item in the array
         //set the sel property's html to that
         self.sel.html = ($.map(options, function (val) {
             return $('<option>').text(val).val(val);
         }));
    }
}

var testArray = ['one', 'two', 'three'];
var dropdown = new Dropdown(testArray);
dropdown.sel.appendTo($('body'));
console.log(dropdown.options()); //nothing outputted to the console
功能下拉列表(数据){
this.sel=$('');
}
Dropdown.prototype.options=函数(选项){
var self=this;//使用$(this)也不起作用
如果(!选项){
//如果为null,则返回
返回self.sel.html();
}否则{
//从数组中的每个项生成一个jQuery选项对象
//将sel属性的html设置为
self.sel.html=($.map)选项、函数(val){
返回$('').text(val).val(val);
}));
}
}
var testArray=['1','2','3'];
var下拉列表=新下拉列表(testArray);
dropdown.sel.appendTo($('body'));
log(dropdown.options())//没有输出到控制台的内容

通过将testArray传递到下拉构造函数中,这应该设置
sel
的html属性,但事实并非如此,并且尝试使用jQuery样式getter不会向控制台打印任何内容。下拉列表附加到页面,只是没有选项

现在,构造函数除了在jQuery中创建一个select元素外,什么都不做。您传入
数据
参数,但不对其进行任何操作。您只需添加
this.options(数据)在构造函数中,您应该可以开始了

function Dropdown(data) {
    this.sel = $('<select>');
    this.options(data);
}
功能下拉列表(数据){
this.sel=$('');
这是选项(数据);
}

现在,构造函数除了在jQuery中创建一个select元素外,什么都不做。您传入
数据
参数,但不对其进行任何操作。您只需添加
this.options(数据)在构造函数中,您应该可以开始了

function Dropdown(data) {
    this.sel = $('<select>');
    this.options(data);
}
功能下拉列表(数据){
this.sel=$('');
这是选项(数据);
}

现在,构造函数除了在jQuery中创建一个select元素外,什么都不做。您传入
数据
参数,但不对其进行任何操作。您只需添加
this.options(数据)在构造函数中,您应该可以开始了

function Dropdown(data) {
    this.sel = $('<select>');
    this.options(data);
}
功能下拉列表(数据){
this.sel=$('');
这是选项(数据);
}

现在,构造函数除了在jQuery中创建一个select元素外,什么都不做。您传入
数据
参数,但不对其进行任何操作。您只需添加
this.options(数据)在构造函数中,您应该可以开始了

function Dropdown(data) {
    this.sel = $('<select>');
    this.options(data);
}
功能下拉列表(数据){
this.sel=$('');
这是选项(数据);
}

首先,您没有在原型中调用options函数。打了电话之后,其他一些bug出现了

self.sel.html = ($.map(options, function (val) {
     return $('<option>').text(val).val(val);
}));
self.sel.html=($.map)选项、函数(val){
返回$('').text(val).val(val);
}));
这将self.sel.html转换为一个数组,其中填充了jQuery选项元素,而您对这些元素不做任何处理

我把它改了一点,让它工作起来。看看它是否适合你。我相信这很容易理解

function Dropdown(data) {
    this.sel = $('<select>');
    this.options(data);
}

Dropdown.prototype.options = function (options) {
    var sel = this.sel;

    options && options.forEach(function ( val ) {
        $('<option>').val(val).text(val).appendTo(sel);
    });
}
功能下拉列表(数据){
this.sel=$('');
这是选项(数据);
}
Dropdown.prototype.options=函数(选项){
var sel=this.sel;
options&&options.forEach(函数(val){
$('').val(val).text(val).appendTo(sel);
});
}

Fiddle:

首先,您没有在原型中调用options函数。打了电话之后,其他一些bug出现了

self.sel.html = ($.map(options, function (val) {
     return $('<option>').text(val).val(val);
}));
self.sel.html=($.map)选项、函数(val){
返回$('').text(val).val(val);
}));
这将self.sel.html转换为一个数组,其中填充了jQuery选项元素,而您对这些元素不做任何处理

我把它改了一点,让它工作起来。看看它是否适合你。我相信这很容易理解

function Dropdown(data) {
    this.sel = $('<select>');
    this.options(data);
}

Dropdown.prototype.options = function (options) {
    var sel = this.sel;

    options && options.forEach(function ( val ) {
        $('<option>').val(val).text(val).appendTo(sel);
    });
}
功能下拉列表(数据){
this.sel=$('');
这是选项(数据);
}
Dropdown.prototype.options=函数(选项){
var sel=this.sel;
options&&options.forEach(函数(val){
$('').val(val).text(val).appendTo(sel);
});
}

Fiddle:

首先,您没有在原型中调用options函数。打了电话之后,其他一些bug出现了

self.sel.html = ($.map(options, function (val) {
     return $('<option>').text(val).val(val);
}));
self.sel.html=($.map)选项、函数(val){
返回$('').text(val).val(val);
}));
这将self.sel.html转换为一个数组,其中填充了jQuery选项元素,而您对这些元素不做任何处理

我把它改了一点,让它工作起来。看看它是否适合你。我相信这很容易理解

function Dropdown(data) {
    this.sel = $('<select>');
    this.options(data);
}

Dropdown.prototype.options = function (options) {
    var sel = this.sel;

    options && options.forEach(function ( val ) {
        $('<option>').val(val).text(val).appendTo(sel);
    });
}
功能下拉列表(数据){
this.sel=$('');
这是选项(数据);
}
Dropdown.prototype.options=函数(选项){
var sel=this.sel;
options&&options.forEach(函数(val){
$('').val(val).text(val).appendTo(sel);
});
}

Fiddle:

首先,您没有在原型中调用options函数。打了电话之后,其他一些bug出现了

self.sel.html = ($.map(options, function (val) {
     return $('<option>').text(val).val(val);
}));
self.sel.html=($.map)选项、函数(val){
返回$('').text(val).val(val);
}));
这将self.sel.html转换为一个数组,其中填充了jQuery选项元素,而您对这些元素不做任何处理

我把它改了一点,让它工作起来。看看它是否适合你。我相信这很容易理解

function Dropdown(data) {
    this.sel = $('<select>');
    this.options(data);
}

Dropdown.prototype.options = function (options) {
    var sel = this.sel;

    options && options.forEach(function ( val ) {
        $('<option>').val(val).text(val).appendTo(sel);
    });
}
功能下拉列表(数据){
this.sel=$('');
这是选项(数据);
}
Dropdown.prototype.options=函数(选项){
var sel=this.sel;
options&&options.forEach(函数(val){
$('').val(val).text(val).appendTo(sel);
});
}

Fiddle:

按照您目前编写代码的方式,您是否需要将
testArray
传递到
options()
方法而不是构造函数?@MikeBrant这将是一种简单(也是唯一)的方法,但我希望使用testArra