如果我们点击的元素上有相同的列
<li class="root-level">
<a href="#" class="levelentry">
MAN
<div class="level">
<a href="#" class="back">Back</a>
</div>
</a>
</li>
<li class="root-level">
<a href="#" class="levelentry">
WOMAN
<div class="level">
<a href="#" class="back">Back</a>
</div>
</a>
</li>
$(document).on('click', '.levelentry', function() {
$('.level', this).addClass('active');
});
但如果是这样的话。因为level
不在levelentry
范围内。但仍然是root-level
<ul class="nav">
<li class="root-level">
<a href="#" class="levelentry">MAN</a>
<div class="level">
<a href="#" class="back">Back</a>
</div>
</li>
<li class="root-level">
<a href="#" class="levelentry">WOMAN</a>
<span class="dont"></span>
<div class="level">
<a href="#" class="back">Back</a>
</div>
</li>
<li class="root-level"> ............ (etc)
</li>
</ul>
如何使用元素$(this)
?除了使用$(this).next()
之外还有其他方法吗?
如果我使用
$(document).on('click', '.levelentry', function() {
$('.level').addClass('active');
});
所以,所有level
都是有效的
答案 0 :(得分:1)
使用.closest()
定位root-level
元素,然后使用.find()
到level
元素
$(document).on('click', '.levelentry', function(e) {
e.preventDefault();
$(this).closest('.root-level').find('.level').addClass('active');
});
$(document).on('click', '.levelentry', function(e) {
e.preventDefault();
$(this).closest('.root-level').find('.level').addClass('active');
});
&#13;
.active{background-color:red}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav">
<li class="root-level">
<a href="#" class="levelentry">MAN</a>
<div class="level">
<a href="#" class="back">Back</a>
</div>
</li>
<li class="root-level">
<a href="#" class="levelentry">WOMAN</a>
<span class="dont"></span>
<div class="level">
<a href="#" class="back">Back</a>
</div>
</li>
<li class="root-level"> ............ (etc)
</li>
</ul>
&#13;
答案 1 :(得分:0)