每当my_div重新上课“选中”时,我想更改背景颜色。 到目前为止,我有这个:
$(document).ready(function() {
if ($('#my_div').hasClass('selected')) {
$("body").css({backgroundColor: '#111'});
}
});
但它不起作用。
怎么了?
答案 0 :(得分:2)
I want to change background color each time when my_div recive class 'selected'.
有一段代码可以为您的元素提供selected
类。这段代码有效地将您的元素class
更改为class = "whatever classes previously existed insertednewclass"
。
执行您要执行的操作的一种方法是找到添加/删除类的函数,并将其挂钩,例如:
myFunction = function(...) {
$('#my_div').addClass('selected');
// add more code
$('#my_div').css({backgroundColor:...});
}
我认为你的情况并不像这样简单。但是,即使函数位于外部库中,这也是可能的,但如果库更改其内部行为则存在风险。
// some.function is the function which adds the "selected" class
var oldFunction = some.function;
some.function = function() {
return oldFunction.apply(this, arguments);
}
如果你不能这样做并且必须反应性地检测类属性修改,你可以使用在非IE浏览器中模糊支持的弃用的DOM Level 2突变事件http://www.w3.org/TR/DOM-Level-3-Events/#events-mutationevents。您可以通过jQuery中的$.bind
查看是否支持它;如果在jQuery中不支持它,你可以使用your_element.addEventListener(...)
这是本地的做事方式(这基本上就是jQuery正在使用的所有内容)。
答案 1 :(得分:1)
您可以创建在设置或删除所选类时触发的自定义事件。
e.g。
$(document).ready(function() {
$('#my_div').live('myDivChangedState', function(event) {
if($(event.target).hasClass('selected')) {
...
}
});
});
而不仅仅是触发事件:
$('#my_div').addClass('selected').trigger('myDivChangedState');
-- OR --
$('#my_div').removeClass('selected').trigger('myDivChangedState');