2010-10-08 78 views
0

我正在嘗試使工作成爲我網站上存在的功能,但在iPhone上的Safari上工作不好。切換jQuery功能不能在Safari Mobile上工作

嗯,我有一個「禮」元素:

.. 
    <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會檢查元素是否可見。如果可見,則隱藏它,然後轉到「其他」選項。在那裏,它檢查元素是否可見。它會發現它不可見,然後將顯示它。

所以有人計算器adivises我使用切換功能,這就是我所做的:

$("#showOrHide").click(function(){ 
    $(this).parent().next().toggle('slow'); 
}); 

我想你的功能:它可以完美的桌面瀏覽器(Chrome瀏覽器,Safari瀏覽器),但在Safari瀏覽器爲iPhone它做了我所描述的:立即顯示並隱藏隱藏的元素。

有沒有解決方案,而不使用extrernal JavaScript框架(但jQuery)?

感謝, 問候

回答

4

我只是寫了一個演示程序(見下文),並在上面運行的桌面火狐,Safari瀏覽器在iPhone模擬器和iPad的Safari罰款。也許你想確保點擊事件不被多個事件監聽器捕獲。

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 
    $('#showHide').click(function(e) { 
     $(this).parent().next().toggle('slow'); 
    }); 
}); 
</script> 
</head> 

<body> 
<ul> 
    <li><input type="button" value="show hide" id="showHide" /></li> 
    <li><input type="text" value="ok" /></li> 
</ul> 
</body> 
</html>