2012-12-24 11 views
5

ben bu jQuery fonksiyonu var gibi bir jquery işlevi çağırmak için:nasıl javascript

$('.scrollToLoginBox').click(function(){ 
    $('html, body').animate({scrollTop: $("#LoginBox").offset().top-5}, 'slow');     
}); 

Bir sınıf olarak istemiyorum, böyle diyoruz edebilmek istiyorum: onClick="scrollTo(id);"

Yani

, ben İşlevin nasıl javascript biçimi:

function scrollTo(id){ 
    $('html, body').animate({scrollTop: $("#'+id+'").offset().top-5}, 'slow'); 
} 

yayıncı tarafından DÜZENLENECEK:

Senden nefret etmiyorum, o) Bütün cevaplarını takdir ediyorum ama kimliğini almaya çalışmıyorum. Öte yandan, yukarıda yayınladığım aynı işlevi oluşturmaya çalışıyorum. Yani, bir tıklama ile ben (Ex. Giriş veya LoginBox var) kimliği gönderir, böylece işlev yavaşça bağlantı noktasına (id = Giriş veya LoginBox) kaydırır.

Şimdi böyle söylemek zorunda: class = "scrollToLoginBox" yerine ben = "scrollTo ('LoginBox') onClick aramak istiyorum; ben yukarıdaki gibi 20 özdeş işlevlere sahip

, Her kimlik için bir tane var ve sahip olmadığım bir başka örnek: class = "scrollToSettings", bunun yerine onClick = "scrollTo ('LoginBox'); veya onClick = "scrollTo ('Ayarlar'); ı id alır tek fonksiyonu istiyorum

  $('.scrollToSettings').click(function(e){ 
     $('html, body').animate({scrollTop:$("#settings").offset().top-5}, 'slow');   
     return false;  
    }); 

    $('.scrollToFaqs').click(function(e){ 
     $('html, body').animate({scrollTop:$("#formCode").offset().top-5}, 'slow');   
     return false;  
    }); 

Sadece bu jQuery işlevine id geçmesine nasıl bilmiyorum;. o)

+2

Neden onclick' 'ile aramak istiyorsunuz? Sadece bu olay işleyicisini daha genel hale getirin. – Blender

+3

... Neden? Neden bizden bu kadar çok nefret ediyorsun? –

+0

Senden nefret etmiyorum; o) Bütün cevapları takdir ediyorum ama id'i almaya çalışmıyorum. Öte yandan, bir işlev oluşturmaya çalışıyorum. – Sebastian

cevap

8
tıkladığınız olan öğeye id geçmek istiyorsanız

, o zaman this.id

Live Demo

onClick="scrollTo(this.id);" 

I kullanmak gerekir f some other control kimliğini geçmek istiyorsanız, kimliği basitçe dizge olarak geçirebilirsiniz.

onClick="scrollTo('idOfHTMLElement');" 

Düzenleme javascript fonksiyonu html elemanları geçirilmesi değerleri için, yorum dayalı.

Veri özelliklerinin tutun, özel özellikler için kullanılır ve jQuery işlevi kullanımda data() işlev erişilen olabilir.

Html

<div class="scrollToCal" data-idtopass="Anchor">click me to go to Anchor</div>​ 

JavaScript

jQuery(document).ready(function($) { 

    $('.scrollToCal').click(function() { 

     $('html, body').animate({ 
      scrollTop: $('#' + $(this).data('idtopass')).offset().top - 5 
     }, 'slow'); 
     return false; 
    }); 

});​ 
+0

Teşekkürler Adil, bunu istiyorum ama yayınladığım jQuery işlevi için. Bende zaten bir kimlik var. Benim örneğimde şunlar olurdu: scrollTo ('Giriş'); Öyleyse, bu tarz çağrıları kabul etmek için funcion'ımı nasıl değiştirebilirim? – Sebastian

+0

Bir keman yapabilir misiniz? istediğini elde edemediğim gibi. – Adil

+0

Merhaba Adil, Palash kodunu kullandım ve id bölümünü kaldırmaya başladım. Fark ettim, Uyarı bile işe yaramaz. NoConflict modundayım. [Bu benim kemanda] (http://jsfiddle.net/sebababi/pGxP8/) – Sebastian