对于您的具体示例,您可以使用以 selector 开头的属性,然后解析被单击的实际元素上的类名。但我不会那样做,它很脆弱。(例如,假设您在class
属性中添加了第二个类?这会使解析复杂化,并且如果您将其放在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;
});