2011-10-20 14 views
29

Mam następujące HTML:Jak uzyskać identyfikator klikniętego elementu z jQuery

<a href="#" id="#1" class="pagerlink" >link</a> 
<a href="#" id="#3" class="pagerlink" >link</a> 
<a href="#" id="#2" class="pagerlink" >link</a> 
/*etc.... */ 

i następujący skrypt jQuery:

$(document).ready(function() { 

    var $container = $('.gallery_r').cycle({ 
     fx:  'scrollHorz', 
     speed: 500, 
     timeout: 0 
    }); 

    $('a.pagerlink').click(function() { 
     var id = $(this).attr('id'); 
     $container.cycle(id); 
     return false; 
    }); 

}); 

do 'pagerlink' kontrola linki do jQuery Cycle slajdów. Jeśli mogę zamienić tę linię:

$container.cycle(id); 

tego

$container.cycle(7); 

to działa ... (oczywiście tylko przechodząc do ślizgania numer 7). Tak więc, moje pytanie brzmi: jak mogę pobrać identyfikator klikniętego łącza i przekazać go do tej linii?

Z góry dziękuję!

+6

'#" nie jest prawidłowym znakiem w '[id]'. – zzzzBov

Odpowiedz

57

identyfikatory są #1 i cycle chce tylko numer przekazany do niego. Przed wywołaniem # musisz usunĘ ... ć cycle.

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id'); 
    $container.cycle(id.replace('#', '')); 
    return false; 
}); 

także identyfikatory nie powinny zawierać znaku #, to nieważne (identyfikatory numeryczne są również nieważne). Sugeruję zmianę identyfikatora na coś takiego jak pager_1.

<a href="#" id="pager_1" class="pagerlink" >link</a> 

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id'); 
    $container.cycle(id.replace('pager_', '')); 
    return false; 
}); 
+6

Identyfikatory numeryczne są faktycznie dozwolone w HTML5. – mkataja

3

Twój identyfikator zostanie przekazany jako # 1, # 2 itd. Jednak # nie jest ważny jako ID (selektory prefiksu CSS o #).

6

Trzeba tylko usunąć skrót od początku:

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id').substring(1); 
    $container.cycle(id); 
    return false; 
}); 
+2

Oficjalna specyfikacja mówi, że identyfikatory powinny zawsze zaczynać się od dużej lub małej litery, nigdy liczby (lub znaku krzyżyka). Wiele przeglądarek na to pozwala, ale nie można ich oczekiwać. – Blazemonger

2

Po pierwsze nie można mieć tylko numer dla swojego identyfikatora, chyba że używasz DOCTYPE HTML5. Po drugie, trzeba albo usunąć # w każdym identyfikatorze lub zastąpienie go w ten sposób:

$container.cycle(id.replace('#','')); 
Powiązane problemy