Javascript 基于更改的内联变量添加类';s值多少?
我们如何根据内联变量的值更改来分配类 以下是更容易理解的演示: 基本上,另一个脚本(我不想碰)是给div分配一个内联样式。我想确定这个样式的值何时“如果”发生了变化,从而将一个类应用于某个元素 以下是代码的小型非交互式副本: HTML: jQuery: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
// 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');
});
});