0

我正在使用以下代码:

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

它适用于几百行,因为每行都有一个选择。为了提高效率,我创建命名函数并将它们附加到单击和更改中会更好。如果是这样,那么我该如何为上述代码执行此操作?

4

2 回答 2

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);
});​

这将处理对相同元素的点击,但只绑定一个函数,这将有助于提高性能。

于 2012-08-03T03:16:15.577 回答
0

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

于 2012-08-03T03:11:33.103 回答