2016-02-26 25 views
1

我想將自定義函數中的參數傳遞給動畫特定部分。完全不確定我缺少什麼?將參數傳遞給動畫jquery函數

我創建了一個JsFiddle

function animate($class,$method,$value,$duration,$delay) { 
    var delay_time = 0; 
    $($class).each(function() { 
     $(this).delay(delay_time).animate({ 
      $method : $value 
     }, { 
      duration: $duration 
     }); 
     delay_time += $delay; 
    }); 
} 

animate(".container","width", 100, 300, 250); 

$method是林試圖超越,這對於一些原因,只是不希望工作?我錯過了什麼?

+0

'$方法:$ value'不能使用一個變量來定義一個對象的屬性名稱一樣的是,它最終只會讓一個名爲「「$方法」屬性' –

+0

@PatrickEvans有什麼理由說明你爲什麼不能? –

+0

@PatrickEvans,怎麼樣?爲什麼? 'var val = 100; var obj = {val:val}; console.log(obj);'=>'Object {val:100}' – Rayon

回答

1

Working Fiddle

,你在做{$method: $value}你無法定義一個對象,但你可以構建你反對動畫的方法之外,那麼只需將它傳遞:

var my_object = {}; 
my_object[$method]=$value; 

$(this).delay(delay_time).animate(my_object,{duration: $duration}); 

希望這有助於。


function animate($class,$method,$value,$duration,$delay) { 
 
    var delay_time = 0; 
 
    $($class).each(function() { 
 
    var my_object = {}; 
 
    my_object[$method]=$value; 
 

 
    $(this).delay(delay_time).animate(my_object,{duration: $duration}); 
 
    delay_time += $delay; 
 
    }); 
 
} 
 

 

 
animate(".container","width", 100, 300, 250);
.container { 
 
    opacity: 1; 
 
    width: 0; 
 
    background: #0f0; 
 
    height: 100px; 
 
} 
 
p { 
 
    margin: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <p>show me</p> 
 
</div> 
 

 
<div class="container"> 
 
    <p>show me</p> 
 
</div>