javascript - 根据不断变化的内联变量值添加一个类?

标签 javascript jquery

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

下面是更容易理解的演示: http://jsfiddle.net/eYGr5/75/

基本上,另一个脚本(我不想碰)正在为 div 分配内联样式。我想确定“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
}

最佳答案

如果添加类的脚本正在使用 jquery 的 .addClass() 方法,您应该覆盖该方法以添加事件监听器,然后将该监听器绑定(bind)到导致其发生的事件当对该事件调用 .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');
 });
});

关于javascript - 根据不断变化的内联变量值添加一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22347140/

相关文章:

javascript - RPG - 为半复杂树结构存储玩家数据

javascript - 如何将日期更新为 UTC -8 的当前日期

jquery - 如何使用 jquery 将元素添加到其各自的同级元素中

javascript - 删除数组元素

javascript - 随着背景颜色的变化更改按钮颜色?

javascript - 嵌套的 UI Accordion ?

jquery - 什么是 jQuery Hook 和回调?

javascript - 有条件地绑定(bind)/取消绑定(bind)事件监听器

javascript - 从javascript中的对象获取值

javascript - JQuery 移动页面脚本