2011-10-20 23 views
29

Tengo el siguiente código HTML:Como llegar Identificación del elemento se hace clic 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.... */ 

y el siguiente 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; 
    }); 

}); 

el control de enlaces 'pagerlink' son a jQuery diapositivas Ciclo. Si yo cambiaré esta línea:

$container.cycle(id); 

para este

$container.cycle(7); 

funciona ... (obviamente, sólo navegar a deslizar el número 7). Entonces, mi pregunta es ¿cómo puedo recoger el ID del enlace al que se hace clic y pasarlo a esa línea?

¡Gracias de antemano!

+6

'#' no es un caracter válido en un '[id]'. – zzzzBov

Respuesta

57

Sus IDs son #1 y cycle sólo quiere un número que se le pasa. Debe eliminar el # antes de llamar al cycle.

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

Además, IDs no debe contener el carácter #, es válido (identificadores numéricos también son válidos). Sugiero cambiar la ID a algo así como 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

Los ID numéricos están permitidos en HTML5. – mkataja

3

Su identificación será pasada como # 1, # 2, etc. Sin embargo, # no es válida como ID (identificadores de prefijos CSS con #).

6

Usted sólo tiene que quitar el hash desde el principio:

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

La especificación oficial dice que las identificaciones siempre deben comenzar con una letra mayúscula o minúscula, nunca un número (o un signo de almohadilla). Muchos navegadores lo permitirán, pero no se puede esperar que lo hagan. – Blazemonger

2

En primer lugar no se puede tener sólo un número para su identificación a menos que esté utilizando el DOCTYPE HTML5. En segundo lugar, es necesario o bien quitar el # en cada ID o sustituirla por la siguiente:

$container.cycle(id.replace('#','')); 
Cuestiones relacionadas