Javascript 基于更改的内联变量添加类';s值多少?

Javascript 基于更改的内联变量添加类';s值多少?,javascript,jquery,Javascript,Jquery,我们如何根据内联变量的值更改来分配类 以下是更容易理解的演示: 基本上,另一个脚本(我不想碰)是给div分配一个内联样式。我想确定这个样式的值何时“如果”发生了变化,从而将一个类应用于某个元素 以下是代码的小型非交互式副本: HTML: jQuery: // This function gets the value of an inline style property, (Source: bit.ly/1er8vJ2): (function($) { $.fn.inlineStyle

我们如何根据内联变量的值更改来分配类

以下是更容易理解的演示:

基本上,另一个脚本(我不想碰)是给div分配一个内联样式。我想确定这个样式的值何时“如果”发生了变化,从而将一个类应用于某个元素

以下是代码的小型非交互式副本:

HTML:

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
}

不同浏览器对颜色的处理方式不同,有些可能返回rgba代码,有些返回十六进制(不管您为它们指定了什么)。我不想检查显式的颜色名称,但如果你真的坚持,你需要编写一个函数来读取rgba/hex并将它们转换为HTML实体。

如果添加类的脚本使用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');
 });
});

另一个JS文件是否使用.addClass?如果是这样的话,我们可以覆盖它以包含一个事件处理程序。他说另一个JS文件正在修改样式,而不是类。@JFit Barmar说的。更具体地说,我将要更改的实际内联样式是“display”,它的值可以从“block”切换到“none”。可能是ok cool的副本,甚至更好。。它是什么款式的?可能是一个使用的机会!重要标签..很好知道,但“颜色”仅用于演示。我将要更改的实际内联样式是“display”,它有一个从“block”切换到“none”的值。这会改变什么吗?该类正在inspector中添加,因此您肯定会得到它。
// 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
}
(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');
 });
});