jQuery$.map()返回新元素
我有以下代码:jQuery$.map()返回新元素,jquery,map,Jquery,Map,我有以下代码: $('#test') .append($.map(this.items, function (item, index) { return '<li><input type="checkbox" value="' + item.key + '">' item.title + '</li>' }).join('')); $(“#测试”) .append($.map)(this.items,函数(item,索引){
$('#test')
.append($.map(this.items, function (item, index) {
return '<li><input type="checkbox" value="' + item.key + '">' item.title + '</li>'
}).join(''));
$(“#测试”)
.append($.map)(this.items,函数(item,索引){
返回“”item.title+” '
}).加入(“”);
但我希望它看起来更像这样:
$('#test')
.append($.map(this.items, function (item, index) {
return $('<li/>').append('<input/>', {type: 'checkbox', value: item.key}).text(item.title)
});
$(“#测试”)
.append($.map)(this.items,函数(item,索引){
返回$('').append('',{type:'checkbox',值:item.key}).text(item.title)
});
但这似乎有效。
有人能帮忙吗
编辑
由于答案似乎不适用于RL情况(我将代码缩短以解释),以下是我的实际代码:
_RenderCheckbox: function () {
$('<ul/>')
.appendTo(this.element)
.addClass('widget')
.append($('<input>').attr({ type: 'text', class: 'field', 'data-map': this.element.attr("data-map") }))
.append($.map(this.items, function (item, index) {
return '<li><label><input type="checkbox" value="' + item.key + '">' + item.parent + item.title + '</label></li>'
}).join(''));
},
\u RenderCheckbox:function(){
$(“
”)
.appendTo(此.element)
.addClass(“小部件”)
.append($('').attr({type:'text',class:'field','datamap':this.element.attr(“datamap”)}))
.append($.map)(this.items,函数(item,索引){
返回“”+item.parent+item.title+” ”
}).加入(“”);
},
这是我正在开发的jquery ui小部件的一部分。.text()
替换
的内容。您必须附加/前置您的元素:
return $('<li />', {
text: item.title
}).append($('<input />', {
type: 'checkbox',
value: item.key
}));
如果你喜欢大的一行:
var $test = $('#test');
$.each(this.items, function(item, index) {
$('<li />', {
text: item.title
}).appendTo($test)
.append($('<input />', {
type: 'checkbox',
value: item.key
}));
});
var$test=$('#test');
$.each(this.items,function(item,index){
$(“”{
文本:item.title
}).appendTo($test)
.附加($(''){
键入:“复选框”,
值:item.key
}));
});
.text()
替换您的
的内容。您必须附加/前置您的元素:
return $('<li />', {
text: item.title
}).append($('<input />', {
type: 'checkbox',
value: item.key
}));
如果你喜欢大的一行:
var $test = $('#test');
$.each(this.items, function(item, index) {
$('<li />', {
text: item.title
}).appendTo($test)
.append($('<input />', {
type: 'checkbox',
value: item.key
}));
});
var$test=$('#test');
$.each(this.items,function(item,index){
$(“”{
文本:item.title
}).appendTo($test)
.附加($(''){
键入:“复选框”,
值:item.key
}));
});
您是否尝试过将东西拼接起来以避免返回错误的对象?
尚未尝试过您的代码这可能会奏效:
$('#test')
.append($.map(this.items, function (item, index) {
var ret = $('<li/>');
var input = ret.append('<input/>', {type: 'checkbox', value: item.key});
input.text(item.title);
return ret;
});
$(“#测试”)
.append($.map)(this.items,函数(item,索引){
var ret=$(“”);
var input=ret.append(“”,{type:'checkbox',值:item.key});
输入.文本(项目.标题);
返回ret;
});
您是否尝试过将东西拼接起来以避免返回错误的对象?
尚未尝试过您的代码这可能会奏效:
$('#test')
.append($.map(this.items, function (item, index) {
var ret = $('<li/>');
var input = ret.append('<input/>', {type: 'checkbox', value: item.key});
input.text(item.title);
return ret;
});
$(“#测试”)
.append($.map)(this.items,函数(item,索引){
var ret=$(“”);
var input=ret.append(“”,{type:'checkbox',值:item.key});
输入.文本(项目.标题);
返回ret;
});
您的代码返回一个[object object]
的联接列表,这与我以前遇到的问题相同。您的代码返回一个[object object]
的联接列表,这与我以前遇到的问题相同。@Dementic:是给我的:[酒吧李>]
你能帮我吗?既然我回来了[object object]
@Dementic:不要使用.join(“”)
。请查看我的答案以了解正确的操作方法。@Dementic:join()
是你的问题。它会将你的对象转换成字符串,这不是你想要的。因此,这个附加操作只有在.each()下才可能
而不是map()
?@dementric:是给我的:[酒吧李>]
你能帮我吗?既然我回来了[object object]
@Dementic:不要使用.join(“”)
。请查看我的答案以了解正确的操作方法。@Dementic:join()
是你的问题。它会将你的对象转换成字符串,这不是你想要的。因此,这个附加操作只有在.each()下才可能
而不是使用map()
?$。map
返回Array
。append()
不接受Array
作为其第一个参数。您会发现使用$循环要容易得多。每个(this.items,…)
,在运行过程中逐步构建和追加
元素。$.map
返回数组。append()
不接受数组
作为其第一个参数。您会发现使用$.each(this.items,…)循环要容易得多
,在运行过程中逐步构建和附加
元素。