每次my_div recive class'selected'时,我都想改变背景颜色。 到目前为止,我得到这个:如何在jQuery中使用if语句
$(document).ready(function() {
if ($('#my_div').hasClass('selected')) {
$("body").css({backgroundColor: '#111'});
}
});
,但它不工作。
怎么了?
每次my_div recive class'selected'时,我都想改变背景颜色。 到目前为止,我得到这个:如何在jQuery中使用if语句
$(document).ready(function() {
if ($('#my_div').hasClass('selected')) {
$("body").css({backgroundColor: '#111'});
}
});
,但它不工作。
怎么了?
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 2级突变事件http://www.w3.org/TR/DOM-Level-3-Events/#events-mutationevents。您可以通过jQuery中的$.bind
查看它是否受支持;如果它在jQuery中不受支持,则可以使用your_element.addEventListener(...)
这是本地方式来执行任务(基本上,jQuery正在使用的所有内容)。
您可以创建一个自定义事件,当选定的类被设置或删除时,该事件将被触发。
例如
$(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');
你能说明它是如何接收这个类的吗? –
如果你使用jQueryUIs'selectable',我会倾听'selectableselected'事件。 –
你在寻找['.live()'](http://api.jquery.com/live/)或['.delegate()'](http://api.jquery.com/delegate/) ? –