Jquery RemoveClass не работает для кнопок начальной загрузки

У меня возникли проблемы с использованием функции 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 может возникнуть проблема с удалением классов, которые имеют фоновое изображение, цвет или даже атрибуты фильтра. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Заранее спасибо за вашу помощь.


person Prathamesh Datar    schedule 17.06.2012    source источник


Ответы (2)


Использовать:

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

Вместо:

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

поскольку для него нет второго аргумента, и 1000 не имеет никакого смысла.

Две возможные подписи:

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

Дополнительная информация:

person Sarfraz    schedule 17.06.2012
comment
Я использую определение jqueryui для removeClass. Это определено здесь, по этой ссылке ссылка - person Prathamesh Datar; 21.06.2012

Вы используете несуществующую сигнатуру функции:

removeClass("classname", integer) // WRONG

В JQuery AFAIK такой возможности нет, вы можете сделать:

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

Я не понимаю, что означает 1000, но держу пари, что его удаление должно решить проблему.

person Cranio    schedule 17.06.2012
comment
1000 означает продолжительность, в течение которой должен произойти переход от одного класса к другому. Это определение определено в определении класса jqueryui для removeClass, и его можно найти здесь - person Prathamesh Datar; 21.06.2012