2012-12-24 26 views
5

mam tej funkcji jQuery:Jak wywołać funkcję jquery jak w javascript

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

nie chcę go jako klasę, chciałbym, aby móc nazwać tak: onClick="scrollTo(id);"

Tak, jak mogę umieścić funkcję w javascript format:

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

edytowany przez wydawcę:

Nie nienawidzę was; o) Doceniam wszystkie twoje odpowiedzi, ale nie próbuję uzyskać id. Z drugiej strony staram się zbudować tę samą funkcję, którą opublikowałem powyżej. Tak więc, za jednym kliknięciem wyślę identyfikator (który mam Ex. Login lub LoginBox), dzięki czemu funkcja będzie przewijać powoli do kotwicy (id = Login lub LoginBox).

Teraz muszę nazwać tak: class = „scrollToLoginBox”, zamiast tego chciałbym nazwać onclick = "scrollTo («LoginBox»);

Mam 20 identyczne funkcje jak wyżej, po jednym dla każdego id. Innym przykładem tego, co mam i czego nie chcę, jest: class = "scrollToSettings", zamiast tego chciałbym go nazwać onClick = "scrollTo (" LoginBox "); lub onclick = "scrollTo («Ustawienia»);

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

chciałbym tylko jedną funkcję, która pobiera identyfikator ja po prostu nie wiem jak przekazać identyfikator do tej funkcji jQuery; o).

+2

Dlaczego chcesz to nazwać z 'onclick'? Po prostu spraw, aby obsługa zdarzeń była bardziej uniwersalna. – Blender

+3

... Dlaczego? Dlaczego tak bardzo nas nienawidzisz? –

+0

Nie nienawidzę Cię, o) Doceniam wszystkie odpowiedzi, ale nie próbuję uzyskać identyfikatora. Z drugiej strony staram się zbudować funkcję. – Sebastian

Odpowiedz

8

Jeśli chcesz przekazać identyfikator elementu klikane, następnie trzeba użyć this.id

Live Demo

onClick="scrollTo(this.id);" 

I f chcesz przekazać id some other control, a następnie proste przekazanie id jako ciąg.

onClick="scrollTo('idOfHTMLElement');" 

Edit na podstawie uwag, przekazywania wartości z elementów HTML do funkcji javascript.

atrybuty dane wykorzystywane są do hold atrybutów niestandardowych i może być dostępne w jQuery użyć funkcji data() funkcyjnego.

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

Dzięki Adil, chcę tego, ale dla funkcji jQuery opublikowałem. Mam już identyfikator. W moim przykładzie będzie to: scrollTo ("Login"); Jak więc zmienić moją funkcję, aby zaakceptować ten sposób wywoływania tego? – Sebastian

+0

Czy możesz zrobić skrzypce? ponieważ nie mogłem dostać tego, czego chcesz. – Adil

+0

Witam Adil, użyłem kodu Palasha i zacząłem eliminować część id. Zauważyłem, że nawet Alert nie działa. Jestem w trybie noConflict. [to w moim skrzypcach] (http://jsfiddle.net/sebababi/pGxP8/) – Sebastian

Powiązane problemy