2009-05-07 15 views
8

Ich versuche, ein Click-Ereignis zu einem LI-Element hinzuzufügen, aber es wird nicht auf der Seite ausgelöst. Meine Seite Markup wie folgt aussieht:JQuery - Click-Event zu LI- oder SPAN-Elementen hinzufügen?

<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> 

Und in meinem JS-Code ich habe:

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

Irgendwelche Gedanken?

TIA

+1

ein: e.preventDefault() e.preventDefault sollte –

Antwort

14

Sie sicher, dass Sie 1.3 haben jquery im Code enthalten? Die folgenden Werke fein (direkte Kopie und aus Ihrer Frage einfügen) für mich, wenn ich auf einem der 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> 

Sind Sie sicher, Ihre updateNavigation Funktion arbeitet nicht wahr? Vielleicht ist es ausgelöst, aber etwas ist in ihm falsch ...

+0

Meine dev Umwelt gegen mich verschworen wurde. Nach einem Neustart wurde meine JS-Datei aktualisiert und es hat wie erwartet funktioniert. Scheint, dass die ältere Datei im temporären Cache gespeichert wurde. Danke für die Bestätigung! –

0

Ich tat das gleiche wie @Parrots und es funktioniert für mich. Sie könnten jedoch möchten, dass Ihre Wähler ändern:

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

Damit die Prozedur nur auf Elemente angewendet wird, die einen Titel Attribut haben.

+0

Danke - ich werde es ausprobieren! (Besser, Fehler zu vermeiden, als sie später zu behandeln) –

+0

Funktioniert wie ein Champion! –

0

Ich hatte ein ähnliches Problem, wo ich eine Popup-Liste verwendet, die der Benutzer ausgewählt hat. Grundsätzlich klickt der Benutzer auf ein Eingabefeld und eine ul wird angezeigt.

Dies funktionierte gut mit einer 500ms Animation, aber beim Umschalten auf 250ms war die Scrolling-Down-Animation zu schnell und anscheinend wurde das Klick-Ereignis nie auf einem li ausgelöst.

0

DO NOT Verwendung Spanne ist es besser delegieren

Verwandte Themen