Jquery ui`removeClass`不起作用

时间:2012-07-21 12:48:46

标签: jquery jquery-ui

这是我的HTML

<div id="c">
    <div class="base">
        <div class="cb out" id="red" data-color="Red">
        </div>
    </div>
    <div class="base">
        <div class="cb out" id="green" data-color="Green">
        </div>
    </div>
    <div class="base">
        <div class="cb out" id="blue" data-color="Blue">
        </div>
    </div>
</div>

我想删除out类并使用jquery-ui添加in类。这是代码:

    //focuse mouseower
    function fmo(element) {
        var $element = $(element);
        $element.removeClass("out");
        $element.addClass("in",300);
    }

    //blur mouseout
    function bmo(element) {
        var $element = $(element);
        $element.removeClass("in");
        $element.addClass("out",300);

    }
    function ready() {
        $(".cb").mouseover(function () { fmo(this); });
        $(".cb").mouseout(function () { bmo(this); })
        $(".cb").focus(function () { fmo(this); });
        $(".cb").blur(function () { bmo(this); });
    }
    $(function () { ready(); });

上面的代码不起作用,但如果我删除jquery-ui引用并只使用jquery来完成这段代码的工作:

    //focuse mouseower
    function fmo(element) {
        var $element = $(element);
        $element.removeClass("out");
        $element.addClass("in");
    }

    //blur mouseout
    function bmo(element) {
        var $element = $(element);
        $element.removeClass("in");
        $element.addClass("out");

    }
    function ready() {
        $(".cb").mouseover(function () { fmo(this); });
        $(".cb").mouseout(function () { bmo(this); })
        $(".cb").focus(function () { fmo(this); });
        $(".cb").blur(function () { bmo(this); });
    }
    $(function () { ready(); });

它有效。我不知道该怎么办,但我真的需要帮助。 的更新 这是我的风格(我认为它可能影响结果)

<style type="text/css">
    .out {
        display: inline-block;
        margin-left: 5px;
        background-color: #56a100;
        opacity: 0.5;
        margin: auto;
        width: 70%;
        height: 70%;
    }

    .in {
        display: inline-block;
        margin-left: 5px;
        background-color: #56a100;
        opacity: 1;
        margin: auto;
        width: 100%;
        height: 100%;
    }

    .base {
        display: inline-block;
        width: 50px;
        height: 50px;
        margin-left: 5px;
        margin-top: 100px;
    }
</style>

我上传了代码here

2 个答案:

答案 0 :(得分:3)

试试这个

$(function(){ 
    $(".cb").on('mouseenter', function(){ 
        $(this).stop(1,1).removeClass("out").addClass("in", 300);
    })
    .on('mouseleave', function(){ 
        $(this).stop(1,1).removeClass("in").addClass("out",300); 
    });
});​

DEMO.

答案 1 :(得分:0)

你在哪里获得添加/删除类的第二个参数?

使用队列,使用链接,并使函数重用代码。

function helper (_elem, add, remove){
  var elem = $(_elem);
    elem.removeClass(remove).delay(300).queue(
     function(next){
        elem.addClass(add);
        next();
     }
  );
}

//focus mouseower
function fmo() {
  helper(this, "in","out");
}

//blur mouseout
function bmo() {
  helper(this, "in","out");
}

function ready() {
    $(".cb").on("mouseover focus", fmo).on("mouseout blur", fmo);
}
$(ready);