2012-12-24 20 views
5

Ho questa funzione jQuery:Come chiamare una funzione jQuery come in javascript

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

Non voglio come una classe, mi piacerebbe essere in grado di chiamare in questo modo: onClick="scrollTo(id);"

Così, come posso mettere la funzione in javascript formato:

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

a cura di editore:

Non ti odio ragazzi; o) Apprezzo tutte le tue risposte, ma non sto cercando di ottenere l'id. D'altra parte, sto cercando di costruire la stessa funzione che ho pubblicato sopra. Quindi, con un clic invierò l'id (che ho Ex. Login o LoginBox), in modo che la funzione scorrerà lentamente fino all'ancora (id = Login o LoginBox).

Ora devo chiamare in questo modo: class = "scrollToLoginBox", invece mi piacerebbe chiamarlo onclick = "scrollTo ('Loginbox');

ho 20 identiche funzioni come il precedente, Un altro esempio di ciò che ho e non voglio è: class = "scrollToSettings", invece mi piacerebbe chiamarlo onClick = "scrollTo ('LoginBox'); o onclick = "scrollTo ('Impostazioni');

  $('.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;  
    }); 

vorrei solo una funzione che prende l'id solo che non sanno come passare l'id a questa funzione jQuery; o).

+2

Perché vuoi chiamare con 'onclick'? Basta rendere questo gestore di eventi più generico. – Blender

+3

... Perché? Perché ci odi così tanto? –

+0

Non ti odio; o) Apprezzo tutte le risposte, ma non sto cercando di ottenere l'id. D'altra parte, sto cercando di costruire una funzione. – Sebastian

risposta

8

Se si desidera passare alla voce id essere cliccato, allora avete bisogno di utilizzare this.id

Live Demo

onClick="scrollTo(this.id);" 

I Se vuoi passare l'id di some other control, devi semplicemente passare l'id come stringa.

onClick="scrollTo('idOfHTMLElement');" 

Modifica sulla base di commenti, per il passaggio di valori da elementi HTML a funzione javascript.

attributi dati vengono utilizzati per gli attributi personalizzati stretta e potrebbe essere accede in uso la funzione jQuery data() funzione.

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

Grazie Adil, voglio questo, ma per la funzione jQuery che ho pubblicato. Ho già l'id. Nel mio esempio, sarebbe: scrollTo ('Login'); Quindi, come modifico la mia funzione per accettare questo modo di chiamarlo? – Sebastian

+0

Potresti fare un violino? come non ho potuto ottenere quello che vuoi. – Adil

+0

Ciao Adil, ho usato il codice Palash e ho iniziato a eliminare la parte id. Ho notato che nemmeno l'avviso funziona. Sono in modalità noConflict. [this in my fiddle] (http://jsfiddle.net/sebababi/pGxP8/) – Sebastian

Problemi correlati