jQuery:因为fadeOut()而避免代码重复

时间:2014-06-02 12:33:02

标签: javascript jquery

这是我多次面临的问题:

  • 我有一个可能或可能 不可见的元素
  • 我需要在元素中做一些事情
  • 如果元素是可见的,fadeOut()该元素
  • 完成这些事后:fadeIn()该元素

问题在于:我的代码如下所示:

function showOnlyElement(myEl)
{
    $('body')
        .children('div:not(.'+myEl+')')
        .fadeOut()
        .promise().done(function() {
            var el=b.children('div.'+myEl);
            if (el.is(':visible')) {
                /* I have to hide it before modifying it */
                el.fadeOut(function() {
                    /* long code (A) modifying the innerHTML of el */
                    el.fadeIn();
                });
            } else {
                /* AGAIN same long code (A) modifying the innerHTML of el */
                el.fadeIn();
            }
        });
}

我只是想把它弄干净所以不要重复same long code (A)

你是如何做到这一点的(通用方式)?

1 个答案:

答案 0 :(得分:1)

简单的通用解决方案:

$('body')
    .children('div:not(.'+myEl+')')
    .fadeOut()
    .promise().done(function() {
        var el=b.children('div.'+myEl);
        function longCode(){
            /* long code (A) modifying the innerHTML of el */
            el.fadeIn();
        }
        if (el.is(':visible')) {
            el.fadeOut(longCode);
        } else {
            longCode();
        }
    });