2011-07-19 32 views
0

您好我有一個無序列表:故障定位的兄弟姐妹

<ul class="prodDetails"> 
<li class="details1"><a href="">Link1</a></li> 
<li class="details2"><a href="">Link2</a></li> 
<li class="details3"><a href="">Link3</a></li> 
</ul> 

$("ul.prodDetails li.details1 a").addClass('prodDetailsOn').siblings().removeClass('prodDetailsOn'); 

我試圖類「prodDetailsOn」添加到被點擊的HREF,而所有其他的HREFs的刪除它。

我錯過了目標。有任何想法嗎?

感謝

回答

0

這其實是一種常見的模式。我所做的是首先刪除切換,然後將其設置在觸發事件的事物上。

$('.prodDetails a').click(function() { 
    $('.prodDetails a.prodDetailsOn').removeClass('prodDetailsOn'); 
    $(this).addClass('prodDetailsOn'); 
}); 
1

您必須返回<li>元素才能獲得其他LI。

$("ul.prodDetails li.details1 a").addClass('prodDetailsOn').parent('li').siblings().removeClass('prodDetailsOn'); 
+0

,我認爲這是最好的答案,因爲它使修正後的局部範圍內,而其他需要額外的查找。 – Jordan

+0

謝謝。這沒有*相當*的工作,但它幫助我想出了。我添加了find(「a」),它的工作原理是:$(「ul.prodDetails li.details3 a」)。addClass('prodDetailsOn')。parent('li')。siblings()。find(「a」)。 removeClass( 'prodDetailsOn'); – Yahreen

0
$("ul li a").click(function() { 
$("ul li a").removeClass("propDetailsOn"); 
$(this).addClass('propDetailsOn'); 
}) 
0
$(function(){ 
$("a").click(function(e){ 
e.preventDefault(); 
    $("a").not($(this)).removeClass("prodDetailsOn"); 
    $(this).addClass("prodDetailsOn"); 
}); 
}); 

這裏是小提琴http://jsfiddle.net/3nigma/uF7M5/1/