Скрипт не работает на айфонах

186
20 декабря 2017, 23:32

Почему данный скрипт не работает на айфонах?

$(document).ready(function() {
    $('body').on('click', '.icon-angle-down', toggleParent);
    function toggleParent() {
        $(this).toggleClass('active');
        $(this)
            .parents('.item.parent')
            .toggleClass('active');
        $(this)
            .siblings('.sub-menu')
            .toggleClass('open');
    }
});
Answer 1

$(document).ready(function() { 
 
    $('body').on('click', '.icon-angle-down', function() { //<- попробуйте так 
 
        $(this).toggleClass('active'); 
        $(this) 
            .parents('.item.parent') 
            .toggleClass('active'); 
        $(this) 
            .siblings('.sub-menu') 
            .toggleClass('open'); 
 
    }) 
 
});
.icon-angle-down{cursor:pointer} 
.active{color:red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="icon-angle-down">1</div>

Answer 2

Фокус в том, что ребята в Эппл страшно заморочены на accessibility. Поэтому в сафари клик обработчики не работают на элементах, которые семантически не кликабельны. Так что если ваш .icon-angle-down элемент - это, например, div или span, то клик не отработает.

Есть несколько вариантов решить проблему:

1) Самый прямой: Поменять элемент с классом .icon-angle-down на кликабельный <a> или <button>.

2) Css хак: нужному элементу задать cursor: pointer, тогда клик обработчики срабатывают. Не проверял я его давно, может уже не работать.

3) Помимо click обработчика добавить onTouchEnd, он будет срабатывать в мобильном сафари. Но иметь два обработчика с одинаковым поведением чревато багами и двойным срабатыванием.

Надеюсь, поможет.

READ ALSO
Web авторизация по smart-card (смарт картам)

Web авторизация по smart-card (смарт картам)

Необходимо реализовать авторизацию в веб прилажении (Symfony 3x) по smart-card (смарт картам), подскажите как это можно реализовать? Может есть уже...

167
Как сделать карточки аватарок как на картинке?

Как сделать карточки аватарок как на картинке?

Как сделать карточки аватарок как на картинке?Не получается создать пустое место на правой стороне для картинок

170
Ошибка при запуске теста Selenium

Ошибка при запуске теста Selenium

Пытаюсь разобраться в автоматическом тестировании web-приложенийУстановил пока только NodeJS

227
Постоянный редирект Curl

Постоянный редирект Curl

Помогите с решением проблемы пожалуйстаЕсли зайти на страницу через браузер, то страница работает

168