将此匿名函数移动到真正的命名函数是否更好?

时间:2012-08-03 03:08:02

标签: jquery

我使用以下代码:

   $('#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);
        })

它应用于几百行,因为每行都有一个选择。为了提高效率,我最好创建命名函数并将它们附加到单击和更改。如果是,那我怎么能为上面的代码做这个呢?

2 个答案:

答案 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)

将匿名函数更改为命名函数无论如何都不会提高性能。只需使用您认为的干净风格。