我使用以下代码:
$('#dataTable .select-topic')
.click(function () {
if ($(this).attr('data-list') == "N") {
$(this).attr('data-list', 'Y')
var topicSelectHtml = $('#TopicID')
.clone()
.find("optgroup:first").remove().end()
.find("option[value$='**']").remove().end().html();
$(this).html(topicSelectHtml);
$(this).attr('data-clicked', 'Y')
}
})
.change(function () {
$(this).attr("title", $("option:selected", this).text());
var type = $(this).attr('id').split('_')[1];
updateField(entity, $(this), type);
})
它应用于几百行,因为每行都有一个选择。为了提高效率,我最好创建命名函数并将它们附加到单击和更改。如果是,那我怎么能为上面的代码做这个呢?
答案 0 :(得分:2)
是否命名该功能不会真正影响性能。然而,不是创建和绑定数百个不同的函数实例,最好只创建一个委托事件处理程序并将其绑定到父代:
$('#dataTable').on('click', '.select-topic', function() {
if ($(this).attr('data-list') == "N") {
$(this).attr('data-list', 'Y')
var topicSelectHtml = $('#TopicID').clone().find("optgroup:first").remove().end().find("option[value$='**']").remove().end().html();
$(this).html(topicSelectHtml);
$(this).attr('data-clicked', 'Y')
}
}).on('change', '.select-topic', function() {
$(this).attr("title", $("option:selected", this).text());
var type = $(this).attr('id').split('_')[1];
updateField(entity, $(this), type);
});
这将处理相同元素的点击,但只绑定一个函数,这将有助于提高性能。
答案 1 :(得分:0)
将匿名函数更改为命名函数无论如何都不会提高性能。只需使用您认为的干净风格。