2011-10-20 17 views
29

Ho il seguente html:Come ottenere ID di elemento cliccato con 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.... */ 

e il seguente script 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; 
    }); 

}); 

il controllo link 'pagerlink' sono a jQuery Cycle presentazione. Se sostituisco questa linea:

$container.cycle(id); 

per questo

$container.cycle(7); 

funziona ... (ovviamente solo la navigazione a scivolare numero 7). Quindi, la mia domanda è: come posso prelevare l'ID del link che viene cliccato e passarlo in quella linea?

Grazie in anticipo!

+6

'#' non è un carattere valido in un '[id]'. – zzzzBov

risposta

57

gli ID sono #1 e cycle vuole solo un numero passato a esso. È necessario rimuovere # prima di chiamare cycle.

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

Inoltre, gli ID non dovrebbe contenere il carattere #, è valido (ID numerici sono anche valido). Suggerisco di cambiare l'ID a qualcosa come 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

Gli ID numerici sono effettivamente consentiti in HTML5. – mkataja

3

L'ID verrà passato come numero 1, numero 2 ecc. Tuttavia, # non è valido come ID (ID prefisso selettori CSS con #).

6

Hai solo bisogno di rimuovere l'hash dall'inizio:

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

La specifica ufficiale dice che gli ID devono sempre iniziare con una lettera maiuscola o minuscola, mai un numero (o un cancelletto). Molti browser lo permetteranno, ma non puoi aspettarti che lo facciano. – Blazemonger

2

Prima di tutto non si può avere solo un numero per l'ID a meno che non si sta utilizzando il DOCTYPE HTML5. In secondo luogo, è necessario rimuovere la # in ogni id o sostituirla con questo:

$container.cycle(id.replace('#','')); 
Problemi correlati