2009-05-07 19 views
8

Estoy tratando de agregar un evento de clic a un elemento LI pero no se está disparando en la página. Mi marcado de página que parece:JQuery: ¿agregar evento de clic a los elementos LI o SPAN?

<div id="Navigation"> 
<ul> 
    <li class="navPrevNext inactive">|&lt; First Page</li> 
    <li class="navPrevNext inactive">&lt; Prev Page</li> 
    <li class="navIndex selected" title="0 ">1</li> 
    <li class="navIndex notselected" title="1 ">2</li> 
    <li class="navIndex notselected" title="2 ">3</li> 
    <li class="navPrevNext active" title="1">Next Page &gt;</li> 
    <li class="navPrevNext active" title="2">Last Page &gt;|</li> 
</ul> 
</div> 

Y en mi código JS que tengo:

$("#Navigation li").live('click', function(e) { e.preventDefault; this.blur(); return updateNavigation($(this).attr('title')); }); 

¿Alguna idea?

TIA

+1

una cosa: e.preventDefault debe e.preventDefault() –

Respuesta

14

Estás seguro de tener jQuery 1.3 incluido en el código? Las siguientes obras fina (copiar y pegar directamente de su pregunta) para mí cuando hago clic en cualquiera de las lis:

<html> 
<head> 
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
<script type="text/javascript"> 
function updateNavigation(title) { 
    alert(title); 
} 

$("#Navigation li").live('click', function(e) { 
    e.preventDefault; 
    this.blur(); 
    return updateNavigation($(this).attr('title')); 
}); 

</script> 
</head> 
<body> 
<div id="Navigation"> 
<ul> 
    <li class="navPrevNext inactive">|&lt; First Page</li> 
    <li class="navPrevNext inactive">&lt; Prev Page</li> 
    <li class="navIndex selected" title="0 ">1</li> 
    <li class="navIndex notselected" title="1 ">2</li> 
    <li class="navIndex notselected" title="2 ">3</li> 
    <li class="navPrevNext active" title="1">Next Page &gt;</li> 
    <li class="navPrevNext active" title="2">Last Page &gt;|</li> 
</ul> 
</div> 
</body> 
</html> 

¿Seguro que su función updateNavigation está funcionando bien? Tal vez se está desencadenando, pero algo está mal dentro de él ...

+0

Mi entorno de desarrollo estaba conspirando contra mí. Después de reiniciar, mi archivo JS se actualizó y funcionó como se esperaba. Parece que el archivo más antiguo estaba retenido en la memoria caché temporal. Gracias por la confirmación! –

0

Hice lo mismo que @Parrots y me funciona. Es posible, sin embargo, que desee cambiar su selector para:

$("#Navigation li[title]").live('click', function(e) { 
    e.preventDefault; 
    this.blur(); 
    return updateNavigation($(this).attr('title')); 
}); 

Para que el controlador sólo se aplica a los elementos que tienen un atributo de título.

+0

Gracias - ¡Lo intentaré! (Es mejor evitar los errores que manejarlos más adelante) –

+0

¡Funciona como un campeón! –

0

Tuve un problema similar cuando estaba usando una lista emergente que el usuario seleccionó. Básicamente, el usuario hace clic en un cuadro de entrada y se revela un ul.

Esto funcionó muy bien con una animación de 500ms, pero al cambiar a 250ms, la animación de desplazamiento hacia abajo fue demasiado rápida y aparentemente el evento click nunca se activó en un li.

0

lapso de uso ¡No Está mejor delegado

Cuestiones relacionadas