我有多个具有相同类的元素。当我在下面使用此方法时,它不起作用。
$(".tab-content")[index].addClass("active-content");
Run Code Online (Sandbox Code Playgroud)
我的代码:
HTML:
<div class="container">
<div class="content">
<ul class="tag">
<li>
<a href="javascript:;">
Lodon
</a>
</li>
<li>
<a href="javascript:;">
Paris
</a>
</li>
<li>
<a href="javascript:;">
Tokyo
</a>
</li>
</ul>
<div class="tab-content">
<h3>Lodon</h3>
<p>London is the capital of England</p>
</div>
<div class="tab-content">
<h3>Paris</h3>
<p>Paris is the capital of France</p>
</div>
<div class="tab-content">
<h3>Tokyo</h3>
<p>Tokyo is the capital of Japan</p>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
和JS
$(".tag li").click(function () {
var index = $(this).index();
$(".tab-content")[index].addClass("active-content");
});
Run Code Online (Sandbox Code Playgroud)
myf*_*ide 14
那是因为.addClass()是 jQuery 方法,而不是本机 JS 方法。
当您使用 时$(".tab-content")[index],您是在 jQuery 对象中选择真正的 DOM 元素。使用document.getElementById("id").
就像你将它与 jQuery 方法结合起来一样:
document.getElementById("id").addClass("class");
这也会产生错误并且不起作用:
$(".tab-content")[index].addClass("class");
为了让这个工作,你必须坚持使用 jQuery。幸运的是,jQuery有做到这一点的方法:.eq()。就像.addClass(),这是一个 jQuery 方法,因此您可以以相同的方式使用它。
解决方案: $(".tab-content").eq(index).addClass("active-content");
此方法将选择完整匹配元素集的给定索引处的元素,并且仅对那个元素执行操作。
经过一番摆弄之后,我想出了你代码的这个替代实现。
我想我会把它放在这里,也许有人会发现它有用:
$(".select").change(function() {
$(".tab.active").removeClass("active").addClass("hidden");
$(".tab").eq($(this).children("option:selected").index()).removeClass("hidden").addClass("active");
});Run Code Online (Sandbox Code Playgroud)
.tab.hidden {display:none;}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<select class="select">
<option selected="selected">London</option>
<option>Paris</option>
<option>Tokyo</option>
</select>
<div class="tab active"><h3>London</h3><p>London is the capital of England</p></div>
<div class="tab hidden"><h3>Paris</h3><p>Paris is the capital of France</p></div>
<div class="tab hidden"><h3>Tokyo</h3><p>Tokyo is the capital of Japan</p></div>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5904 次 |
| 最近记录: |