2012-09-04 58 views
1

我需要一個.selected類dinamically分配到那裏我點擊,並刪除asigned到點擊的元素任何其他先前類,所以我可以改變CSS類的元素。也許這個代碼:變化類單擊

$(this).click(function(){ 
    $(this).addClass('selected'); 
}); 

的作品,但如果我點擊任何其他LI發生了什麼?任何幫助來完成這項工作?

編輯: 好看到這個代碼:

<ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
</ul> 

默認情況下沒有任何類,但我在第2項則點擊HTML應該在這一個轉變:

<ul> 
    <li>Item 1</li> 
    <li class="selected">Item 2</li> 
    <li>Item 3</li> 
</ul> 

但再次如果我點擊第3項,那麼HTML應該轉換爲這一項:

<ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li class="selected">Item 3</li> 
</ul> 

這就是我想要做的

+0

您想從先前點擊的li-s中刪除類嗎?的 –

+0

可能重複[添加和刪除點擊類](http://stackoverflow.com/questions/7077673/add-and-remove-class-on-click) – nbrooks

回答

4

我建議:

$(selector).click(function(){ 
    $('.selected').removeClass('selected'); 
    $(this).addClass('selected'); 
}); 

至於由moonwave99(下)離開了評論,如果你只想從刪除selected類名包含在同一parent元素中的這些元素:

$(selector).click(function(){ 
    var that = $(this); 
    that.parent().find('.selected').removeClass('selected'); 
    that.addClass('selected'); 
}); 

雖然它是值得記住你點擊什麼元素,什麼家長會,例如,點擊a下面的HTML:

<ul> 
    <li><a href="#">link text</a></li> 
</ul> 

會照顧li內爲其他.selected元素,所以你應該使用:

$(selector).click(function(){ 
    var that = $(this); 
    that.closest('ul').find('.selected').removeClass('selected'); 
    that.addClass('selected'); 
}); 
+1

我只是將搜索範圍縮小到'$(」 .selected',$(this).parent())'如果頁面中有更多列表。 – moonwave99

+0

@ david-thomas看到我編輯過的帖子,這和你留下的評論一樣嗎? – ReynierPM

+0

@ReynierPM,答案中的最後一個代碼應該做你需要的。 –

0

先刪除選定的類別從內所有UL李,然後應用類點擊華里。

$('ul li').click(function(){ 
$('ul li').removeClass('selected'); 
    $(this).addClass('selected'); 
}); 
+0

這也不起作用 – ReynierPM