Я пытаюсь заставить работать функциональность, которая существует на моем веб-сайте, но плохо работает в Safari для iPhone.
Ну, у меня есть элемент "li":
..
<li><input id='showOrHide' type='button' value='show or hide'/></li>
<li><input type='text' value='ok'/></li>
..
Когда я нажимаю кнопку «показать или скрыть», ввод текста должен появиться или исчезнуть.
Затем у меня есть функция jQuery, которая связывает щелчок:
$("#showOrHide").click(function(){
if($(this).parent().next().is(':visible'))
$(this).parent().next().hide('slow');
else
$(this).parent().next().show('slow');
});
Проблема в том, что если элемент появляется, Safari скрывает его, а затем показывает.
Поэтому я думаю, что Safari проверяет, виден ли элемент или нет. Если он виден, он скрывает его, затем переходите к выбору «еще». Там он проверяет, виден элемент или нет. Он обнаружит, что его не видно, а затем заставит его появиться.
Итак, кто-то из StackOverflow посоветовал мне использовать функцию переключения, что я и сделал:
$("#showOrHide").click(function(){
$(this).parent().next().toggle('slow');
});
Я попробовал вашу функцию: она отлично работает в настольных браузерах (chrome, safari), но в Safari для iPhone она делает то, что я описал: мгновенно показывает и скрывает скрытый элемент.
Есть ли решение для этого без использования внешней среды javascript (но jQuery)?