我正在尝试使用
jQuery("#element-id").parent().addClass('some-class');
我的结构是这样的:
<div class="tab-container user-dash-tabs">
<div class="tabs1">
<ul class="shadetabs" id="countrytabs">
<li class="poll"><a id="pillow-pack" rel="country2" href="javascript:;" class="selected"></a></li>
<li class="bott"><a href="javascript:;" class="" id="bottles" rel="country1"></a></li>
</ul>
<div class="cl"></div>
</div>
<input type="hidden" class="input-search" value="123" id="lubepack" name="lubepack">
<p></p>
<div class="cl"></div>
<div class="tabcontent tab-content" id="country1" style="display: none;">
<ul class="left-tab">
<li title="water based" class=" add"><a class=" tab-pic7" id="tab-pic7-b" title="water based" href="javascript:;"> </a></li>
<li title="silicone based"><a class=" tab-pic8" id="tab-pic8-b" title="silicon based" href="javascript:;"> </a></li>
<li title="arousal"><a class=" tab-pic9" id="tab-pic9-b" href="javascript:;"> </a></li>
<li title="flavored"><a class=" tab-pic10" id="tab-pic10-b" href="javascript:;"> </a></li>
<li title="organic"><a class=" tab-pic11" id="tab-pic11-b" href="javascript:;"> </a></li>
<li title="desensitizing"><a class=" tab-pic12" id="tab-pic12-b" href="javascript:;"> </a></li>
<div class="cl"></div>
</ul>
<div class="cl"></div>
</div>
<div class="tabcontent tab-content" id="country2" style="display: block;">
<ul class="left-tab">
<li class=" " title="water based"><a class=" tab-pic7" id="tab-pic7-p" title="water based" href="javascript:;"> </a></li>
<li title="silicone based"><a class=" tab-pic8" id="tab-pic8-p" title="silicon based" href="javascript:;"> </a></li>
<li title="arousal"><a class=" tab-pic9" id="tab-pic9-p" title="" href="javascript:;"> </a></li>
<li title="flavored"><a id="tab-pic10-p" class=" tab-pic10" href="javascript:;"> </a></li>
<li title="organic"><a id="tab-pic11-p" class=" tab-pic11" href="javascript:;"> </a></li>
<li title="desensitizing"><a id="tab-pic12-p" class=" tab-pic12" href="javascript:;"> </a></li>
<div class="cl"></div>
</ul>
<div class="cl"></div>
</div>
<script type="text/javascript">
var countries=new ddtabcontent("countrytabs")
countries.setpersist(true)
countries.setselectedClassTarget("link") //"link" or "linkparent"
countries.init()
</script>
<div class="cl"></div>
<div class="search-box fl"><input type="text" id="name" class="input-search" name="name" value=""></div>
<div class="cl"></div>
</div>
如您所见,一个div
被隐藏而另一个可见。
每当点击一个链接时,都应该将一个add
类应用于它的父级。
j("#" + id + "-p").parent().addClass("add");
j("#" + id + "-b").parent().addClass("add");
但是,它只是将类添加到隐藏的<li>
中。如果我从Firebug控制台执行相同的代码。它工作正常。
我尝试创建一个方法来执行此操作,结果仍然相同。我不知道为什么我要面对这个问题的孩子。如果有人遇到类似的问题,请告诉我。
答案 0 :(得分:5)
问题是因为您正在使用parent()
,它只在当前元素的DOM树中找到一层,在您的情况下是li
。您需要使用closest()
代替它,它将遍历整个DOM,直到找到与提供的选择器匹配的第一个元素。
考虑到这一点,以下内容适合您:
j("#" + id + "-p").closest("DIV").addClass("add");
j("#" + id + "-b").closest("DIV").addClass("add");
答案 1 :(得分:0)
试试这个:
j("#" + id + "-p").parents("DIV.tabcontent").addClass("add");
j("#" + id + "-b").parents("DIV.tabcontent").addClass("add");
答案 2 :(得分:0)
试试这个:
$(document).ready(function () {
$("a[href='" + window.location.pathname + "']").parents(".hidden-ul").css("display", "block");
$("a[href='" + window.location.pathname + "']").parent("li").addClass("select");
});