2014-03-12 31 views
1

我們如何基於內聯變量的值更改來分配類?基於變化的內聯變量的值添加類?

這裏是一個更容易理解的演示: http://jsfiddle.net/eYGr5/75/

基本上,另一個腳本(我不想碰)被指定爲內嵌樣式覈實。我想確定何時「IF」這個樣式的值發生了變化,以便將某個類應用於某個元素。

這裏是代碼的縮小的非交互副本:

HTML:

<div class="mm-active">mm-active</div> 

<div class="mm-container" style="color:DarkGreen;">mm-container: By hovering here, the jQuery should look up the new inline style (DeepPink) and ONLY because of that inline style, turn mm-active lime green!</div> 

CSS:

.activefix { 
    background:Lime; 
} 

的jQuery:

// This function gets the value of an inline style property, (Source: bit.ly/1er8vJ2): 
(function($) { 
    $.fn.inlineStyle = function (prop) { 
     return this.prop("style")[$.camelCase(prop)]; 
    }; 
}(jQuery)); 

// Now how do we assign a class based on what this inline variable changes to? 
if ($(".mm-container").inlineStyle("color") == 'DeepPink') { 
    $('.mm-active').addClass('activefix'); // This should apply "Lime" to mm-active 
} 
+0

其他JS文件是否使用.addClass?如果是這種情況,我們可以覆蓋它來包含事件處理程序。 –

+0

他說另一個JS文件正在修改樣式,而不是類。 – Barmar

+0

@JFit Barmar說了些什麼。更具體地說,我將改變的實際內聯樣式是「顯示」,它具有從「塊」切換到「無」的值。 – WebMW

回答

0

顏色的處理不同地跨越瀏覽器,有些可能會返回rgba代碼和一些十六進制(無論你分配給他們)。我不願意檢查明確的顏色名稱,但是如果你確實堅持,你需要編寫一個函數來讀取rgba/hex並將它們轉換爲HTML實體。

+0

有用,但「顏色」只是爲了示範。我將改變的實際內聯樣式是「顯示」,它具有從「塊」切換到「無」的值。這會改變什麼嗎? – WebMW

+0

班級_is_被添加到檢查員中,所以你一定會到達那裏。 –

1

IF腳本,它是將類是使用jQuery的.addClass()方法,你應該覆蓋的方法來添加事件偵聽器,然後綁定該偵聽到事件是導致它開火時.addClass在該事件中被調用。

(function(){ 
var originalAddClassMethod = jQuery.fn.addClass; 
jQuery.fn.addClass = function(){ 
    var result = originalAddClassMethod.apply(this, arguments); 
    jQuery(this).trigger('cssClassChanged'); 
    return result; 
} 
})(); 


$(function(){ 
$("#Your Element To Add Handler To").bind('cssClassChanged', function(){ 
    $('.mm-active').addClass('activefix'); 
}); 
});