2012-12-24 7 views
5

Ich habe diese Funktion jQuery:Wie eine jQuery-Funktion wie in Javascript nennen

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

Ich möchte es nicht als Klasse, würde Ich mag es nennen zu können, wie folgt aus: onClick="scrollTo(id);"

Also, wie kann habe ich die Funktion in javaScript-Format:

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

durch Herausgeber EDITED:

Ich hasse euch nicht Jungs; o) Ich schätze all Ihre Antworten, aber ich versuche nicht, die ID zu bekommen. Auf der anderen Seite versuche ich die gleiche Funktion zu bauen, die ich oben veröffentlicht habe. Also, das auf einen Klick werde ich die ID senden (die ich Ex. Login oder LoginBox habe), so dass die Funktion wird langsam zum Anker (ID = Login oder LoginBox).

Jetzt muss ich es so nennen: class = „scrollToLoginBox“, stattdessen würde ich es nennen möchte onClick = "scrollTo (‚LoginBox‘);

Ich habe 20 identische Funktionen wie die oben, für jede ID ein anderes Beispiel: Was ich habe und nicht will, ist: class = "scrollToSettings", stattdessen möchte ich es onClick = "scrollTo ('LoginBox'); oder onClick = "scrollTo (‚Einstellungen‘);

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

würde ich nur eine Funktion wie das die id nimmt ich weiß einfach nicht, wie die ID diese jQuery Funktion zu übergeben; o.)

+2

Warum wollen Sie es nennen mit 'onclick'? Machen Sie diesen Event-Handler nur generischer. – Blender

+3

... Warum? Warum hasst du uns so sehr? –

+0

Ich hasse dich nicht, o) Ich schätze alle Antworten, aber ich versuche nicht, die ID zu bekommen. Auf der anderen Seite versuche ich eine Funktion zu bauen. – Sebastian

Antwort

8

Wenn Sie id Punkt übergeben möchten geklickt wird, dann müssen Sie this.id

Live Demo

onClick="scrollTo(this.id);" 

I verwenden Wenn Sie ID von some other control übergeben möchten, übergeben Sie einfach die ID als Zeichenfolge.

onClick="scrollTo('idOfHTMLElement');" 

bearbeiten auf Kommentare basiert, zu JavaScript-Funktion Werte von HTML-Elementen vorbei.

Datenattribute werden für zu halten benutzerdefinierte Attribute verwendet und in jQuery-Funktion Gebrauch data() Funktion zugegriffen werden könnte.

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

Danke Adil, ich möchte das aber für die jQuery Funktion die ich veröffentlicht habe. Ich habe bereits die ID. In meinem Beispiel wäre es: scrollTo ('Login'); Also, wie ändere ich meine Funktion, um diese Art des Aufrufs zu akzeptieren? – Sebastian

+0

Können Sie eine Geige machen? weil ich nicht bekommen konnte, was du willst. – Adil

+0

Hi Adil, ich habe den Palash-Code benutzt und angefangen, den ID-Teil zu entfernen. Mir ist aufgefallen, dass nicht einmal der Alarm funktioniert. Ich bin im NoConflict-Modus. [Dies in meiner Geige] (http://jsfiddle.net/sebababi/pGxP8/) – Sebastian