私は、ユーザーが前の都市または次の都市に移動するために使用できる約50項目と2つのリンクを持つことができる次のメニューを持っています。ここでは、4つのアドレスリンクを示しています。要素が親の最初か最後かをチェックするにはどうすればよいですか?
<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>
私は、スタックオーバーフロー上のいくつかの助けを持っていたし、次のコードを思い付いた:
$("#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())
});
私がクリックしたときにこれは前と適切な値に次のhrefを設定し、メニュー項目の1つでオンにします。それは動作しますが、リストの最初と最後の項目では機能しません。私に必要なのはこれです:最初の項目がクリックされると
A)私は#prevがに変更したいと思います:最後の項目はI上でクリックされたとき
<a id="prev" href="#"><img src="/images/noentry.png"></a>
b)は#を希望します次に変更する:
<a id="next" href="#"><img src="/images/noentry.png"></a>
余計なコードを追加することなくこれを行うことができますか?
'length == 0'をチェックするのではなく、真実性をチェックして' if/else'ボディを元に戻すことができます。 'if(next.length){...} else {...}' –
共通コードにローカル関数を使用する2番目のバージョンを追加しました。 – jfriend00