2015-04-07 4 views
2

Ниже у меня есть рабочий пример абстракции метода анимации jQuery, который я сделал, и он отлично работает. Однако, если вы заметили В функции ani() {} Я жестко закодирован в классе элемента DOM. Я хочу заменить жесткий код DOM ключевым словом «this», чтобы использовать его в других местах. Когда я пытаюсь это сделать, это не сработает, я попытался поэкспериментировать с bind(), и ничего не исправил.Как абстрагироваться метод анимации JQuery

код ниже: https://jsfiddle.net/u28fhf77/2/


$(".item").hover(function() { 

    ani("+=50", "+=50") 



}, function() { 

    ani("-=50", "-=50") 


}); 


function ani(val1, val2) { 
    var height = val1; 
    var width = val2 
    $(".item").animate({ // Hardcoded 'item' but want 'this' 
     height: height, 
     width: width 
    }, 200); 
} 

ответ

1

Достаточно просто преобразовать, добавив дополнительный аргумент для элемента.

$(".item").hover(function() { 
    ani(this, "+=50", "+=50"); 

}, function() { 
    ani(this, "-=50", "-=50"); 

}); 


function ani(elem, val1, val2) {   
    $(elem).animate({ 
     height: val1, 
     width: val2 
    }, 200); 
} 

DEMO

+1

Спасибо, когда лимит времени до Я проверю ответ – Dan

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