以下哪个更好?
1)在每次循环中创建元素。
2)创建元素,每次循环只更改其html
注意:这种方法不起作用,需要使用如下的
更新:
所以,在查看了所有答案/评论之后,这是最终的函数。 还有更多改进吗?
$(obj).children('option').each(function(){
var item = $('<div />')
.html($(this).text())
.append(plus)
.addClass('ui-widget-content ui-state-default')
.hover(
function(){$(this).addClass('ui-state-hover')},
function(){$(this).removeClass('ui-state-hover');}
);
$(list).append(item);
});
2)创建元素,每次循环只更改其html
注意:这种方法不起作用,需要使用如下的
.clone()
方法。
var item = $('<div />')
.addClass('ui-widget-content ui-state-default')
.hover(
function(){$(this).addClass('ui-state-hover')},
function(){$(this).removeClass('ui-state-hover');});
$(obj).children('option').each(function(){
$(item).html($(this).text()).append(plus);
$(list).append(item);
});
更新:
所以,在查看了所有答案/评论之后,这是最终的函数。 还有更多改进吗?
function create_list(obj) {
var list = $('<div />')
.attr('id','keyword_unselect').addClass('ui-widget')
.delegate("div", "mouseenter mouseleave", function() {
$(this).toggleClass('ui-state-hover');
});
var plus = $('<div />').addClass('ui-icon-plus');
var item = $('<div />')
.append(plus)
.addClass('ui-widget-content ui-state-default');
$(obj).children('option').each(function(){
item.clone(true)
.prepend(this.text)
.appendTo(list);
});
return list;
};