2016-02-26 3 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, How? Зачем ? '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>

Смежные вопросы