如何在jQuery中使用if语句

时间:2011-10-02 20:27:39

标签: javascript jquery html css

每当my_div重新上课“选中”时,我想更改背景颜色。 到目前为止,我有这个:

$(document).ready(function() {
    if ($('#my_div').hasClass('selected')) {
        $("body").css({backgroundColor: '#111'});
    }
});

但它不起作用。

怎么了?

2 个答案:

答案 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');