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
下拉列表
,它将数组作为参数。此参数将由附加到原型的方法使用。该参数是一个数组,应将其转换为jQueryoption
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