首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优雅的jQuery函数

优雅的jQuery函数
EN

Stack Overflow用户
提问于 2011-03-11 11:57:19
回答 2查看 194关注 0票数 0

我对jQuery比较陌生,我想知道我做的下面的函数是不是以最优雅的方式生成的?任何信息都是非常感谢的!谢谢

代码语言:javascript
复制
 $(function(){
        $('#enter').click(function() {
            $('#enter').fadeOut(80, function () {
            $('#enter').hide( function () { 
            $('#overlay').fadeIn(1500, function () {
            $("#loading").show().delay(500);
            $("#loading").hide( function(){ $("#s5").show(); });
            return false;

        });
    });
    });
        $('#slideTop').animate({ 
            marginTop: '-=230'   
        }, 500, function() {
    });
        $('#slideBottom').animate({ 
            marginBottom: '-=333',
        }, 500, function() {
    });

        });
    });

我应该让它像这样开始吗:

代码语言:javascript
复制
$(function(){
var cintro = function(){
    $('#box').click(function(){
        $(this).slideUp(
            {duration:1000}//2000,easing:"easeOutBounce"
        );
    setTimeout(function(){
        ('#box').slideUp(
            {duration:1000}//2000
        );}, 6000);
    //$('#box').css({'display': 'block'}).click(function(){$(this).css('display', 'none');
});
    $('#slidenav').slideDown({duration:2000,easing:"easeOutBounce"});
    $('#slider1').data('AnythingSlider').startStop(true);
}
$('#enter').click(cintro);
});
EN

回答 2

Stack Overflow用户

发布于 2011-03-11 13:49:25

代码语言:javascript
复制
$(function(){
  // cache some selectors that won't ever change
  var enter = $( '#enter' ),
      overlay = $( '#overlay' ),
      loading = $( '#loading' ),
      s5 = $( '#s5' ),
      slideTop = $( '#slideTop' ),
      slideBottom = $( '#slideBottom' );

  enter.click(function() {
    enter.fadeOut(80, function() {
      // i don't think you really need this .hide() but you might...
      enter.hide();
      overlay.fadeIn(1500, function() {
        loading.show().delay(500).hide('slow', function() {
          $("#s5").show();
        })
      });
    });
    return false;
  });

  slideTop.animate({ 
    marginTop: '-=230'   
  }, 500);
  slideBottom.animate({
    marginBottom: '-=333',
  }, 500);
});
票数 1
EN

Stack Overflow用户

发布于 2011-03-11 12:07:53

我不是JQuery专家,但是有几件事我需要改变。

如果我一次又一次地与DOM中的同一对象交互,我通常会用一个常量来初始化它,而不是每次都选择它:

代码语言:javascript
复制
var $ENTER_BUTTON = null;
...[other elements]...

$(document).ready(function(){
  $ENTER_BUTTON = $('#enter');
  ... [etc] ...
});

你也不需要跟随带有hide AFAIK的fadeOut。这是多余的。

如果其他动画可能会干扰过渡,请适当使用stop()

最后,如果这些转换中的任何一个可以从页面的其他部分调用,或者如果你想让你的代码更具可读性,我会定义一个函数并引用这个函数:

代码语言:javascript
复制
function enterAnimation(){
  $ENTER_BUTTON.fadeOut(80,function(){
  ... etc
}    

$(document).ready(function(){
  $ENTER_BUTTON = $('#enter');
  ... [etc] ...
  $ENTER_BUTTON.click(enterAnimation);
});    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5268770

复制
相关文章

相似问题

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