2012-05-03 4 views
2

Допустим, у меня есть эти две функций:JQuery Click(): Изменить аргументы функции после того, как было выполнено

function z(a,b,c){ 
    $("#d").click(function(){ 
     var sum = a+b+c; 
     x(sum) 
    } 

    function x(first){ 
     var second = first*(first+1); 
     var third = second*(second+1); 
     $("#e").animate({ 
      "left": "+=first%" 
     },{ 
      complete:function(){ 
       z(first, second, third) 
     }); 

хочет первую функцию [function z] активируются с различными аргументами и " unbind "его предыдущий .click() event после анимации.


Так что первый раз нажмите на #d, #e движется (a+b+c)%. Второй раз щелкните по #d, #e ходов (a+b+c)+(a+b+c)*(a+b+c+1)+(a+b+c)*(a+b+c+1)*((a+b+c)*(a+b+c+1)+1)%. В третий раз ...

Я пробовал использовать unbind, но он, похоже, не вписывался в эту ситуацию. В итоге я написал все более грязные коды. Я не думаю, что использование unbind - это умный способ.

ответ

3
function z(a,b,c){ 
     x(a+b+c); 
} 

function x(first) { 
    var second = first*(first+1); 
    var third = second*(second+1); 
    $("#e").animate({ 
    "left": "+=first%" 
    },{ 
    complete:function(){ 
    z(first, second, third) 
}); 

$(document).ready(function(){ 
    $("#d").one("click",function(){ 
     z(1,2,3); 
    }); 
}); 

Функция «one()» гарантирует, что ваше событие «щелчок» будет отключено после нажатия на него в первый раз.

Ссылка: http://api.jquery.com/one/

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