2016-04-01 30 views
0

Bir işlevi başka bir işleve argüman olarak iletmeye çalışıyorum. Benim fonksiyonun ne bekliyoruzBaşka bir işleve argüman olarak işlev JQuery

//Scroll To + Remove Class if exists 


$(document).on("click", "a[href^=\\#]", function() { 

    $("html, body").animate({ 

     scrollTop: $('section[data-attr-target="'+this.hash.slice(1)+'"]').offset().top }, 300); 

    return false; 

}, fun()); 

function fun() { 

    if(("menu").hasClass("active")) { 

    $("menu").removeClass("active"); 

    } 
} 

JS Bin full example

:

  1. Tıklama etkinlik
  2. gelin bir bölüme
  3. eğlenceli() başlar ve kontroller olsun $ ("menüsünden" yukarı) eğer kaldırırsa, bir "aktif" sınıfına sahiptir. (Bu fonksiyon bir öğeye kaydırma için çalışır olmadan)

eğlenceli() fonksiyonu argümanları arasında davranışı kırar ama eğlenceli gerekir() $ ("menü") elemanın sınıfını kontrol etmek.

Lütfen, yanlış yaptığımı açıklayınız.

+1

jQuery en '()' iki geri aramalar almaz, muhtemelen daha önce ** o fonksiyonu aramak istedim üzerinde ** 'return false; }, 'kısım, canlandırma parçasından hemen sonra, gerçekten yapmak istediğin şey buydu -> ** https: //jsfiddle.net/qxkmygzb/** – adeneo

+0

Eğer fun() işlevini" false döndür "den önce koyarsam Sınıfı kontrol etmiyor, anlayamadığım gibi yürütülemiyor –

+0

FYI: Sınıfı kaldırmak için bir şey kontrol etmek zorunda değilsiniz, sadece – adeneo

cevap

1

Bir öğedeki animasyon tamamlandığında çağrılan complete function'u kullanmanız gerekir. İşte

bir örnektir http://jsfiddle.net/tg5op333/29/

$(document).on("click", "a[href^=\\#]", function() { 
    $("html, body").animate({ 
     scrollTop: $('section[data-attr-target="'+this.hash.slice(1)+'"]').offset().top}, 
     {duration: 300, 
     specialEasing: { 
     width: "linear", 
     height: "easeOutBounce" 
     }, 
     complete: function() { 
      fun(); 
     } 
    }); 
}); 
İlgili konular