【问题标题】:how to make a working variable for object key in jquery to avoid extra codes如何在jquery中为对象键创建一个工作变量以避免额外的代码
【发布时间】:2015-03-28 06:07:58
【问题描述】:

我正在使用 TweenMax 脚本在滚动时向 div 添加样式。我想在不同的页面分辨率上有不同的样式。所以,我添加了一个if 条件作为解决方案。如何使用变量来避免在 if 条件内添加额外代码?!我添加了$direction 并且只添加了direction 作为变量,但是,它似乎不起作用。

if (($(window).width() <= 900) && ($(window).width() >= 409)) {  
    var $direction = 'left';
} else {
    var $direction = 'top';
}
$(".softwares").children(".row").each(function(a) {
     $(this).delay(150 * a).fadeIn(0, function() {
         TweenMax.to($(this), .3, {
            $direction: 45 * a,
            opacity: 1,
            ease: Back.easeOut
         })
     })
});

我在stackoverflow中查看了很多问题,并使用[]来解决,但我无法解决。

我不希望代码是这样的:(我想避免的额外代码)

$(".softwares").children(".row").each(function(a) {
     if (($(window).width() <= 900) && ($(window).width() >= 409)) {  
         // opacity: 1, ease: Back.easeOut are extra codes in both conditions
         var options = {left: 45 * a, opacity: 1, ease: Back.easeOut};
     } else {
         var options = {top: 45 * a, opacity: 1, ease: Back.easeOut};
     }
     $(this).delay(150 * a).fadeIn(0, function() {
         TweenMax.to($(this), .3, options) // use options object here
     })
});

【问题讨论】:

  • 额外的代码是什么?
  • 添加了我想避免的额外代码

标签: javascript jquery css gsap


【解决方案1】:

你可以这样做:

$(".softwares").children(".row").each(function(a) {
     if (($(window).width() <= 900) && ($(window).width() >= 409)) {  
         // set options object directly in your condition
         var options = {left: 45 * a, opacity: 1, ease: Back.easeOut};
     } else {
         var options = {top: 45 * a, opacity: 1, ease: Back.easeOut};
     }
     $(this).delay(150 * a).fadeIn(0, function() {
         TweenMax.to($(this), .3, options) // use options object here
     })
});

但这会让你编写一些额外的代码。

否则,您可以查看this question 了解有关如何使用动态键的更多信息。

【讨论】:

  • 谢谢,这是一个很好的解决方案。所以,+1。但是,让我们看看是否有比这更好的解决方案
  • 是的,您看过提供的链接吗? :)
  • 我以某种方式更正了您的答案以避免“未捕获的 ReferenceError: a is not defined”
猜你喜欢
  • 2013-04-07
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多