【问题标题】:Jquery RemoveClass not working for bootstrap buttonsJquery RemoveClass 不适用于引导按钮
【发布时间】:2012-06-17 11:20:34
【问题描述】:

我在使用 Jquery removeClass 功能禁用某个类时遇到问题。类定义如下

.btn-purple
{
    background-color: #F1B2E1;
    background-image: -moz-linear-gradient(top, #F1B2E1, #E986D0);
    background-image: -ms-linear-gradient(top, #F1B2E1, #E986D0);
    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#F1B2E1), to(#E986D0));
    background-image: -webkit-linear-gradient(top, #F1B2E1, #E986D0);
    background-image: -o-linear-gradient(top, #F1B2E1, #E986D0);
    background-image: linear-gradient(top, #F1B2E1, #E986D0);
    background-repeat: repeat-x;
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F1B2E1', endColorstr='#E986D0', GradientType=0);
    border-color: #0055cc #0055cc #003580;
    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
    filter: progid:dximagetransform.microsoft.gradient(enabled=false);
}
.btn-purple:hover,
.btn-purple:active,
.btn-purple.active,
.btn-purple.disabled,
.btn-purple[disabled] {
  background-color: #E986D0;
}

在 javascript 文件中我有以下内容

$(function(){
    $("#1").click(function(){
        $("#1").removeClass("btn-purple", 1000);
        return false
    });

});

这是我希望从中删除类定义的部分的 HTML 标记

<div id="1" class="span3 well homeBox opaque btn-purple">
    <span class="siteBoxContent">What do we do?</span>
</div>

这是我在 Webkit 错误控制台中调试时遇到的错误

TypeError: 'undefined' is not an object (evaluating 'fx.end[0]')      jquery.effects.core.js:32

如果我尝试删除像“homeBox”这样的类,removeClass 可以正常工作。这是 homeBox 类定义的定义

.homeBox
{
    position:relative;
    width:26.666666666667%;
    height:200px;
}

所以我猜测 jQuery 可能会在删除具有背景图像、颜色甚至过滤器属性的类时遇到问题。如果您需要更多信息,请告诉我。提前感谢您的帮助。

【问题讨论】:

    标签: jquery-ui twitter-bootstrap background-image background-color removeclass


    【解决方案1】:

    用途:

    $("#1").removeClass("btn-purple");
    

    代替:

    $("#1").removeClass("btn-purple", 1000);
    

    因为没有第二个参数可用,1000 在那里没有任何意义。

    它的两个可能的签名是:

    .removeClass( [className] )
    .removeClass( function(index, class) )
    

    更多信息:

    【讨论】:

    • 我正在使用 jqueryui 的 removeClass 定义。它在此链接中定义link
    【解决方案2】:

    你使用了一个不存在的函数签名:

    removeClass("classname", integer) // WRONG
    

    在 JQuery AFAIK 中没有这种可能性,你可以这样做:

    .removeClass( [className] )
    .removeClass( function(index, class) ) // from version 1.4
    

    我不明白 1000 代表什么,但我敢打赌,删除它应该可以解决问题。

    【讨论】:

    • 1000 代表从一个类到另一个类的转换应该发生的持续时间。这个定义是在removeClass的jqueryui类定义中定义的,可以找到here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2017-04-18
    • 2021-01-15
    • 2012-01-15
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多