2012-12-06 49 views
0

我有一個菜單,其中包含一堆切換。每個項目切換不同的東西。jQuery - 如果元素具有特定的CSS屬性,執行腳本

我想做一個整體「重置」按鈕,將幾件事重置爲某些默認設置。我需要檢測一個菜單項是否被切換,如果是的話,在該特定項上執行一些代碼,如果不是,則不執行任何操作。隨着項目處於啓用狀態,它得到一個CSS背景顏色,下面的論證,所以我想出了下面的復位代碼:

$('#app-menu ul.dynamic-items li ul li').toggle(function() { 
    $(this).css({background: "#4c581e"}); 
}, function() { 
    $(this).css({background: "none"}); 
}); 

/* Reset Button */ 

$(".reset").click(function() { 
    if($('#app-menu ul.dynamic-items li').css({background: "#4c581e"}) != null) { 
     $(this).click(); /* If the item has the background code mentioned above, it is toggled on, therefore this "click" should reset its state */ 
    } 
    else { 
    // do nothing // 
    }; 
}); 

基本上我想說的是,如果一個菜單項具有#4c581e背景,這意味着它已打開,因此應該「點擊」將其切換爲關閉狀態。

問題是,它不工作。我對jQuery相當新穎,所以我想我做錯了什麼。

任何想法的人?

編輯:我只是想說明菜單項實際上切換頁面上的DIV元素,所以它不僅僅是重置菜單項的CSS樣式的問題。這就是爲什麼我試圖讓它「點擊」該項目,如果檢測到特定的CSS屬性,因爲「點擊」它將基本上再次關閉它。

回答

2

1.

$(this).css("background-color")將返回值,但它可能會是一個RGB值。

=> RGB(255,255,255)

因此,無論比較的RGB值或使用一些轉換工具。

http://www.jquery4u.com/jquery-functions/jquery-convert-rgb-hex-color/

2.

你可能只是想利用CSS類,並切換類。然後,'重置'按鈕可以重新應用所有的默認類到元素,這是更清潔的IMO。

$('#app-menu ul.dynamic-items li ul li').toggle(function() { 
    $(this).toggleClass("active"); 
}); 
$(".reset").click(function() { 
    $('#app-menu ul.dynamic-items li ul li').removeClass("active"); 
}); 

而CSS可能是:

li.active { 
    background-color: #4c581e; 
    display: block; 
} 
+0

它不只是一個,雖然重新應用默認類物質。菜單項切換頁面上的div元素,因此重置按鈕隱藏元素,並且還應該將菜單項背景顏色重置爲無,並重置切換狀態。這就是爲什麼我想要在菜單項上執行「點擊」。點擊該項目應該重置背景顏色並關閉相關的div元素。 –

+1

啊,你可以在觸發點擊事件'$(this).hasClass(「active」);'之前檢查元素是否具有「active」類,這比檢查背景色更容易。 – silasjmatson

相關問題