我正在研究这个演示代码。为什么我无法使用id定位特定元素的父元素?我想将a
类添加到id
元素的父级,其中#map
为$("#map .nav-tabs>li>a").parent().addClass('active');
$("#map .nav-tabs li>a").parent().addClass('active');
.active {
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav-tabs">
<li><a id="map"> Map</a></li>
<li><a id="tap"> Tap</a></li>
<li><a id="app"> App</a></li>
</ul>
view = (View) inflater.inflate(R.layout.your_layout_file, container, false);
答案 0 :(得分:2)
您可以使用.closest()
代替 .parent(),以获得更具面向未来的灵活性
$(".nav-tabs>li>a").closest("#map, #app").addClass('active');
.active {
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav-tabs">
<li><a id="map"> Map</a></li>
<li><a id="tap"> Tap</a></li>
<li><a id="app"> App</a></li>
</ul>
但由于ID是唯一的,因此您可以直接定位您的ID
$("#map, #app").addClass('active');
.active {
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav-tabs">
<li><a id="map"> Map</a></li>
<li><a id="tap"> Tap</a></li>
<li><a id="app"> App</a></li>
</ul>
这让我觉得你实际上是在问一个XY问题 - 你的实际需要是在点击或类似的情况下定位父母:
$(".nav-tabs").on("click", ".nav-tabs-tab", function() {
$(this).addClass("active");
// or
// $(this).closest("li").addClass("active");
// or
// $(this).closest("desiredSelector").addClass("active");
// you got the point
});
.active {
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav-tabs">
<li><a class="nav-tabs-tab">Map</a></li>
<li><a class="nav-tabs-tab">Tap</a></li>
<li><a class="nav-tabs-tab">App</a></li>
</ul>
答案 1 :(得分:0)
你的选择器存在缺陷。您的选择器将匹配此html中的锚点:
<div id="map">
<ul class="nav-tabs">
<li><a>foo</a>
</ul>
</div>
只需将ID放在选择器中:
$(".nav-tabs>li>a").parent().addClass('active');
如果您想定位特定的锚点,请执行以下操作:
$("#map").parent().addClass('active');