以下哪個更好?
1)在每次循環jquery重複元素創建
$(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;
};
是否有原因改變了您的問題中的代碼?它可能會讓未來的讀者感到困惑,因爲現在它幾乎與我的答案相符。 – user113716 2010-09-14 12:16:01
如果你願意,我可以恢復它,我應該恢復它並添加更新嗎? – Hailwood 2010-09-14 12:19:34
我只是想爲任何決定做複製和粘貼的人準備工作代碼;) – Hailwood 2010-09-14 12:20:00