2009-05-07 4 views
8

Sto tentando di aggiungere un evento click a un elemento LI ma non sta sparando nella pagina. La mia pagina di markup si presenta come:JQuery - aggiungi evento click agli elementi 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> 

E nel mio codice JS ho:

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

Qualche idea?

TIA

+1

una cosa: e.preventDefault dovrebbe essere e.preventDefault() –

risposta

14

Sei sicuro di avere jQuery 1.3 incluso nel vostro codice? I seguenti lavori bene (copia diretta e incollare dalla tua domanda) per me quando clicco su uno dei 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> 

Sei sicuro la vostra funzione updateNavigation funziona correttamente? Forse è stato attivato ma qualcosa non va ...

+0

Il mio ambiente dev cospirava contro di me. Dopo un riavvio il mio file JS è stato aggiornato e ha funzionato come previsto. Sembra che il vecchio file fosse contenuto nella cache temporanea. Grazie per la conferma! –

0

Ho fatto la stessa cosa di @Parrots e funziona per me. Si potrebbe, però, vuole cambiare il selettore per:

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

Così che il gestore si applica solo agli elementi che hanno un attributo title.

+0

Grazie - Ci proverò! (Meglio evitare errori che gestirli in seguito) –

+0

Funziona come un campione! –

0

Ho avuto un problema simile in cui stavo utilizzando un elenco popup selezionato dall'utente. Fondamentalmente l'utente fa clic su una casella di input e viene rivelato un ul.

Questo funzionava alla grande con un'animazione di 500ms, ma quando si passava a 250 ms l'animazione a scorrimento era troppo veloce e apparentemente l'evento click non veniva mai attivato su un li.

0

arco uso Non tiratevi E'meglio delegato