首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery删除:通用功能还是独立功能?

jQuery删除:通用功能还是独立功能?
EN

Stack Overflow用户
提问于 2011-03-03 22:25:52
回答 1查看 167关注 0票数 0

我的项目有多个列表,比如人员、工作、等级。对于每个列表,我都有单独的jQuery代码,如下所示:

代码语言:javascript
复制
$('dl.person li.delete').live("click", function() {
  var personDL = $(this).closest('dl');

  if (confirm("Really delete person '" + personDL.find('dt').text() + "' ?")) {
    $.ajax({
      type: "POST",
      url: "/people/do-delete",
      data: "person=" + personDL.attr('id'),
      dataType: "json",
      timeout: 8000,
      success: function(data) {
        personDL.fadeOut("slow", function() {
          personDL.remove();
          var t = (data.total != 1) ? ' person' : ' persons';
          $('h3 span#people').text(data.total + t);
        });
      }
    });
  }

  return false;
});

如你所见,为每个列表使用一个函数是非常困难的,因为"person“的每个实例都需要替换为"job”或"rank“。

我是否应该尝试获取单个函数(有没有简单的方法可以做到这一点?)或者我应该保持事物的原样?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-03 23:15:35

如果HTML和URL结构在人员/工作/等级等方面足够相似,那么您可以编写一个非常简单的泛型函数。如下所示:

代码语言:javascript
复制
function initDeletes() {

    var plurals = {
        person: 'people',
        job: 'jobs',
        rank: 'ranks'
    };

    $.each(['person', 'job', 'rank'], function (index, elt) {
        $('dl.' + elt + ' li.delete').live('click', function() {
            var $DL = $(this).closest('dl');
            var elts = plurals[elt];
            if (confirm("Really delete " + elt + " '" + $DL.find('dt').text() + "' ?")) {
                $.ajax({
                    type: 'POST',
                    url: '/' + elts + '/do-delete',
                    data: elt + '=' + $DL.attr('id'),
                    dataType: 'json',
                    timeout: 8000,
                    success: function(data) {
                        $DL.fadeOut('slow', function() {
                            $DL.remove();
                            var t = ' ' + (data.total === 1 ? elt : elts);

                            // no need for a more-specific selector
                            // adding anything beyond an ID is overspecifying
                            $('#' + elts).text(data.total + t);
                        });
                    }
                });
            }

            return false;
        });
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5182002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档