特定の例では、selectorで始まる属性を使用してから、クリックされた実際の要素のクラス名を解析できます。しかし、私はそれをしません、それは壊れやすいです。(たとえば、class
属性に2番目のクラスを追加したとしましょう。これにより、解析が複雑になり、sub-item-*
クラスの前に配置すると、セレクターが台無しになります。)代わりに、アイテム内のアイテムの位置を使用する可能性があります。コンテナ(可能な場合)、またはdata-*
代わりに属性を使用するようにマークアップを変更します。
コンテナ内にあるのはアイテムだけであると想定した例を次に示します。
実例| ソース
<!-- (The 'items' are unchanged) -->
<div><!-- the container, this div is just an example -->
<a href="#" class="sub-item">Click 1</a>
<a href="#" class="sub-item">Click 2</a>
<a href="#" class="sub-item">Click 3</a>
<a href="#" class="sub-item">Click 4</a>
</div>
index
次に、どのdivがクリックされたかを確認するために使用できます。
$(".sub-item").click(function() {
var $this = $(this),
index = $this.index() + 1;
$(".item-" + index).show(); // Or toggle, whatever
return false;
});
(ゼロベースである+ 1
ため、必要です。)index
ただし、コンテナ内にあるのがそれらだけではない場合は、次のdata-*
属性を使用できます。
実例| ソース
<!-- (The 'items' are unchanged) -->
<div><!-- the container, this div is just an example -->
<a href="#" class="sub-item" data-index="1">Click 1</a>
<a href="#" class="sub-item" data-index="2">Click 2</a>
<a href="#" class="sub-item" data-index="3">Click 3</a>
<a href="#" class="sub-item" data-index="4">Click 4</a>
</div>
...これは本当に簡単です:
$(".sub-item").click(function(e) {
var $this = $(this),
index = $this.attr("data-index");
$(".item-" + index).show(); // Or toggle, etc.
return false;
});