2014-07-11 42 views
0

這裏兩個類是代碼:http://jsfiddle.net/celiostat/NCPv9/的JQuery的toogle一次

2 jquery插件能夠改變(和設置): - DIV的背景色爲灰色 - 文本顏色爲紅色。

問題是我必須準確地將鼠標指向文本上,以便文本也可以改變顏色。 我想通過點擊來改變背景顏色股利和文字 - 任何地方 - 在div

嘗試了各種組合與其他post..but沒有什麼工作,感謝

(理想情況下我也想改變圖片在同一時間!)

$(".item_unselected").on("click", function() { 
$(this).toggleClass("gray_cliked_box"); 
$(".item_unselected").not(this).removeClass("gray_cliked_box"); 
}); 



$(".item_text_in_menubar").on("click", function() { 
$(this).toggleClass("blue_cliked_text"); 
$(".item_text_in_menubar").not(this).removeClass("blue_cliked_text"); 

}); 

回答

1

這是一個CSS問題,而不是一個jQuery的問題。我更新了您的最後一個CSS選擇器:

.gray_cliked_box .item_text_in_menubar { /*for jquery*/ 
    color: red; 
} 

並且點擊時文本變爲紅色。

添加的選擇器說.gray_clicked_box的子類.item_text_in_menubar應該是red。這取代.item_text_in_menubar的其他定義,因爲它是更具體的選擇器。

http://jsfiddle.net/NCPv9/4/

+0

太棒了!感謝帕特里克 - 任何機會..你知道我怎麼能夠剔除背景圖片嗎? – lauWM

+0

哪個元素? –

+0

(我更新了小提琴:http://jsfiddle.net/celiostat/NCPv9/8/)。好吧,我已經將所有這些圖標重複項目都顯示爲紅色,並且與背景和文本類似,我想將圖標變成紅色以顯示點擊框 – lauWM

2

你是相當接近,但你必須點擊文本的原因是因爲你一旦你點擊它,只設置文本的類 - 你永遠不把它從你的時候點擊div。謝天謝地,您可以通過只有一個事件來優化(並修復)您的代碼。如果你點擊一個div,你只需設置這兩個項目。

你可以使用jQuery中的find方法來找到想要在點擊div時修改的跨度。更新後的JS如下:

$(".item_unselected").on("click", function() { 
    $(".item_unselected").removeClass("gray_cliked_box"); 
    $(".item_text_in_menubar").removeClass("blue_cliked_text"); 
    var $this = $(this); 
    $this.addClass("gray_cliked_box"); 
    $this.find(".item_text_in_menubar").addClass("blue_cliked_text"); 
}); 

更新小提琴http://jsfiddle.net/NCPv9/3/

什麼這其實呢,是從所有對象中刪除類,然後只是簡單地添加類回那些你想。您也不必使用toggleClass。你知道你正在添加它,所以只需使用addClass

+0

感謝Entropic的解釋,我已經在下面的帕特里克也工作得很好 – lauWM