2016-05-26 3 views
0

Я хочу, чтобы шрифт был удивительным, только когда размер окна меньше 960 пикселей, поэтому я добавляю это условие, если (window.matchMedia ("(max-width: 960px)").), А также когда я изменить размер окна более 960 эта икона должна была исчезнуть и вновь появиться, когда окно изменения размера под 960 так я этот код:изменить размер окна с помощью jquery

$(window).resize(function() { 
if (window.matchMedia("(max-width: 960px)").matches) { 
    $('li.has_children').prepend('<i class="fa fa-arrow-up"></i>'); 
    $('li.has_children').click(function (e) { 
      $(this).children('i').toggleClass("fa-arrow-up fa-arrow-down"); 
      $(this).children('ul.navi').toggle('1000'); 

      return false; 
    }); 
    } 
}).trigger("resize"); 

, но проблема в том, что, когда я изменить размер окна я имел несколько значок вместо одного

+0

почему бы не использовать CSS @media, чтобы сделать это – pathfinder

+0

я первый использовать медиа-запрос с это: после { цвета: черный; содержание: "\ f107"; font-family: FontAwesome; }, но проблема в том, что когда я хочу изменить значок на клике, я не могу получить css после содержимого с помощью jquery –

ответ

1

Вы получаете несколько значков, похожих на шрифт, потому что вы используете jQuery.prepend(). Каждый раз при изменении размера сценарий выполняется и добавляет еще один значок к <li class="has_children">...</li>.

Чтобы исправить это, вы должны сначала удалить его, чтобы он исчез. Код будет выглядеть следующим образом

$(window).resize(function() { 
    if (window.matchMedia("(max-width: 960px)").matches) { 
     // attempt to remove the icon before prepending it 
     $('li.has_children').children('i.fa.fa-arrow-up').remove(); 
     $('li.has_children').prepend('<i class="fa fa-arrow-up"></i>'); 
     $('li.has_children').click(function (e) { 
      $(this).children('i').toggleClass("fa-arrow-up fa-arrow-down"); 
      $(this).children('ul.navi').toggle('1000'); 

      return false; 
     }); 
    } 
}).trigger("resize"); 

JSFiddle: https://jsfiddle.net/j2o62a45/1/ `

+0

Я проверил ваш код, но я получаю несколько значков шрифта, каждый раз, когда изменяю размер –

+0

@michellompret Извините, я неправильно понял 'jQuery.remove()'. Ответ обновлен и теперь должен работать. – user6384194

0

Да, у вас есть несколько значков, потому что ваш код их там ставит:

$('li.has_children').prepend('<i class="fa fa-arrow-up"></i>'); 

Вы можете перемещать это живое вне мероприятия, чтобы у вас остался только один значок, или вы можете удалить ".fa .fa-arrow-up" от 'li.has_children'. Либо работает.

+0

Если я переведу эту жизнь за пределами события, размер не будет работать. если я получу окно меньше, значок не появится, и эффект переключения не будет работать. –

Смежные вопросы