Переключить треугольник ► ▲ в раскрывающемся списке jQuery

0

Что было бы лучшим способом для переключения треугольника на ▲ в выпадающем меню (без использования изображений)?

<div class="box-heading">
    <a href="javascript:void(0);" id="switch-filters">
          <span>►</span> Možnosti filtrovania</a>
</div>

    $( "#switch-filters" ).click(function() {
    $(".filter_group[filtertype!='p']").toggle();
    });
  • 2
    Да, мы можем сделать это для вас, и нет, у вас не будет плохой репутации в вашей учетной записи #newUser.
Теги:

4 ответа

3

вы можете использовать CSS.. поэтому, когда вы нажимаете на тег, вы добавляете класс в тег. Скажем, класс, который называется clicked, а затем имеет правило CSS, связанное с этим классом

a.clicked span {
        transform: scale(1) rotate(90deg) translate3d(0,0,0);
        /* transform for IE8 */
        -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.00000000, M12=-1.00000000, M21=1.00000000, M22=0.00000000,sizingMethod='auto expand')";
        zoom:1;
}

то CSS будет вращать диапазон 90 градусов, делая стрелку влево стрелкой вниз

совместимость браузера

http://caniuse.com/#search=transforms

также ссылка на CSS Matrix Rotation Calculator:

http://www.boogdesign.com/examples/transforms/matrix-calculator.html

:)

  • 1
    это забавная идея :), однако, вам нужно переключить класс сверху. И можно добавить анимацию (переход) - конечно, выглядело бы круто!
  • 0
    Просто отметим, что это css-level-3 и не полностью поддерживается для кросс-браузерного решения.
Показать ещё 4 комментария
3

Вы можете использовать toggleClass и определить треугольник в CSS3 с псевдо-тегом :before

CSS

.box-heading > a:before{
   content: "▲";
}

.box-heading > a.active:before{
   content: "►";
}

JQuery

$(".box-heading > a").click(function(){
   $(this).toggleClass("active")
});
  • 0
    1+ Мне нравится это предложение.
  • 1
    Хаха, я просто делал скрипку для чего-то подобного. +1 :-D
1

Использовать выражение Ternary

$(".filter_group[filtertype!='p']").is(":visible") ? $(this).next("span").text("▲") : $(this).next("span").text("►")
0

Использование jQuery для замены html вашего диапазона

Что-то вроде:

$('span').text('▲');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню