Ho il seguente menu che può contenere fino a circa 50 articoli e due collegamenti che un utente può utilizzare per navigare verso la città precedente o successiva. Qui per questo esempio sto mostrando solo quattro link di indirizzo.Come posso codificare un assegno per vedere se un elemento è il primo o l'ultimo di un genitore?
<ul id="menu">
<li><a href="/City/0101004H">1</a></li>
<li><a href="/City/0101004I">2</a></li>
<li><a href="/City/0101004J">3</a></li>
<li><a href="/City/0101004K">4</a></li>
</ul>
<a id="prev" href="#"><img width="16" height="16" src="/images/prev.png">Prev</a>
<a id="next" href="#"><img width="16" height="16" src="/images/next.png">Next</a>
ho avuto qualche aiuto su stack overflow e si avvicinò con il seguente codice:
$("#menu").on('click', 'a[href^="/City"]', function(event) {
event.preventDefault();
var prev = $(this).parent().prev().find('a');
var next = $(this).parent().next().find('a');
$('#prev').prop('href', jQuery(prev).prop('href')).prop('title', 'City ' + jQuery(prev).text());
$('#next').prop('href', jQuery(next).prop('href')).prop('title', 'City ' + jQuery(next).text())
});
Questo imposta il href del precedente e successivo al valore appropriato quando si fa clic su una delle voci del menu. Funziona ma non per il primo e l'ultimo elemento nell'elenco. Che cosa ho bisogno è questo:
a) Quando il primo elemento viene cliccato vorrei che la #prev cambiare a:
<a id="prev" href="#"><img src="/images/noentry.png"></a>
b) Quando l'ultimo elemento viene cliccato Vorrei che la # prossimo a cambiare:
<a id="next" href="#"><img src="/images/noentry.png"></a>
C'è un modo semplice che potrei fare senza aggiungere troppo codice aggiuntivo?
Invece di controllare 'length == 0', puoi semplicemente controllare la veridicità e invertire i corpi' if/else', es. 'if (next.length) {...} else {...}' –
Aggiunta una seconda versione che utilizza una funzione locale per il codice comune. – jfriend00