Функция removeClass не работает

81
11

Я хочу удалить класс в html-коде. Поэтому я использую функцию removeClass в JQuery. Однако это не работает. Чтобы быть более конкретным в коде, я хочу, чтобы непрозрачность графа становилась 0 (исчезает) при нажатии кнопки удаления. Однако он ничего не делает. Я не знаю, что там не так. Может кто-нибудь объяснить немного? Заранее спасибо!

Вот ссылка Jsfiddle Вот реальный код:

<!DOCTYPE html>
<html>
<head>

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">

function remove_R() {
$(".me rect").removeClass("rect_obvious");
}

</script>
<style type="text/css">
.rect_style {
stroke:black;
stroke-width:5;

}
.rect_color_1{
fill:#FFC863;
}

.rect_obvious{
opacity:1;
}

.rect_none{
opacity: 0;
}
</style>
</head>

<body>

<svg class="me" width="145" height="65"><rect class="rect_style rect_color_1 rect_obvious" x="3" y="3" rx="20" ry="20" width="140" height="60" ></svg>
<button onclick="remove_R()">remove</button>

</body>
</html>

спросил(а) 2014-08-21T18:48:00+04:00 5 лет, 6 месяцев назад
1
Решение
49

элемент rect имеет класс rect_obvious и не .me.so use:

 $(".me rect").removeClass("rect_obvious");

ответил(а) 2014-08-21T18:49:00+04:00 5 лет, 6 месяцев назад
50

Он работает, когда я меняю код:

$(".me rect").removeClass("rect_obvious");

в:

$(".me rect").attr("class", "rect_obvious rect_none");

Примечание: ссылка Jsfiddle

removeClass, addClass и toggleClass не подходят для SVG.

Этот вопрос похож на тот: jQuery SVG, почему я не могу добавитьClass?

Спасибо, Джей Бланшар. Он напомнил мне об этом!

ответил(а) 2014-08-21T19:22:00+04:00 5 лет, 6 месяцев назад
36

Помимо проблемы доступа к неправильному узлу $('.me'), другая проблема заключается в том, что вы используете тег svg, который является "специальным", jQuery возвращает false для hasClass.

Работать вокруг него, чтобы вытащить атрибут класса, изменить его и затем установить его на новое значение.

http://jsfiddle.net/qn079oqa/4/

ответил(а) 2014-08-21T19:22:00+04:00 5 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема