jQuery .slideDown() .hide() .show() 无法在 iPhone (Safari Mobile) 上运行

标签 jquery iphone ios jquery-mobile mobile-safari

我在移动网站上遇到了 jQuery slideDown()、show()、hide() 功能的问题。该功能适用​​于 Safari、Chrome 和 FF 的桌面版本。它还适用于将用户代理设置为 iPhone 的 Safari。但是,当加载页面 iPhone (Safari) 时,该功能不起作用...当您选择应该切换显示/隐藏的链接时,什么也没有发生(没有错误)。该站点使用以下版本的 jQuery 和 jQuery Mobile:

<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>

下面是脚本中引用的 HTML 示例以及 jQuery 脚本:

[HTML 示例]

<div id="body" class="body-content default-copy">
    Sed eget vehicula dui. Ut feugiat, augue ac ullamcorper varius, tellus nunc aliquam...
    <br>
    <p class="body-content-more default-copy-hidden-more" style="float: right; width: 150px;
        text-align: right; text-decoration: none;">
        <a href="#" class="see_more" style="text-decoration: none;">&gt; See More</a></p>
    <br>
</div>
<div id="body" class="body-content default-copy-full" style="display: none;">
    Sed eget vehicula dui. Ut feugiat, augue ac ullamcorper varius, tellus nunc aliquam
    metus, sed cursus magna felis vel enim. Maecenas elementum, odio eget gravida suscipit,
    felis diam aliquam magna, ut vestibulum augue magna in tortor. Sed nibh justo, iaculis
    ac lacinia non, pellentesque eu erat. Nam mollis, urna at gravida sodales, felis
    nisl hendrerit velit, non ornare sapien purus ut orci. Donec nec augue libero, eu
    tincidunt ipsum. Pellentesque at lacus augue, et egestas enim. Quisque ac dui mi,
    et eleifend nulla. Integer quis elit eget nisl fermentum blandit at in eros. Vestibulum
    a est nisl. Maecenas eget nisl arcu, quis tincidunt risus. Aliquam erat volutpat.
    Nullam lacinia venenatis libero, non imperdiet turpis vestibulum eget. Donec fermentum
    ullamcorper elementum.<br>
    <p class="body-content-more default-copy-hidden-less" style="float: right; width: 150px;
        text-align: right; text-decoration: none;">
        <a href="#" class="see_less" style="text-decoration: none;">&gt; See Less</a></p>
    <br>
</div>

[jQuery 脚本]

$(document).ready(function () {

    $('.see_more').click(function () {

        //divs to hide
        $(".body-content.default-copy").hide();
        $("p.body-content-more.default-copy-hidden-more").hide();

        //divs to show
        $(".body-content.default-copy-full").slideDown(500); 
        $("p.body-content-more.default-copy-hidden-less").show();

    });

    $('.see_less').click(function () {

        //divs to hide
        $(".body-content.default-copy-full").hide();
        $("p.body-content-more.default-copy-hidden-less").hide();

        //divs to show
        $(".body-content.default-copy").slideDown(500);
        $("p.body-content-more.default-copy-hidden-more").show();

    });

});​

如果有帮助,这里还有一个 jsfiddle 链接:http://jsfiddle.net/GwfJ8/

有没有人遇到过这个问题或者有什么建议?感谢您的帮助!

最佳答案

感谢 Kiran 和 sachin kulkarni 花时间查看此内容以及您的回复。这个问题原来与 jQuery Mobile 的 Ajax 导航选项有关。它默认启用,并导致我的脚本(和其他一些功能)出现问题。显然这是一个常见问题,经验丰富的 jQuery 移动开发人员通常首先会禁用此选项。添加以下代码:

<script type="text/javascript"> 
    $(document).bind("mobileinit", function () {
        // jQuery Mobile's Ajax navigation does not work in all cases (e.g.,
        // when navigating from a mobile to a non-mobile page), especially when going back, hence disabling it.
        $.extend($.mobile, {
            ajaxEnabled: false
        });
    }); 
</script>

...在 jQuery 移动脚本之前:

<script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>

... 禁用 Ajax 导航。禁用 Ajax 导航后,问题得到解决...我在此处发布的原始脚本没有任何问题。

关于jQuery .slideDown() .hide() .show() 无法在 iPhone (Safari Mobile) 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12552042/

相关文章:

javascript - 查找数组中最接近的较小值

jquery - Angular 2 最佳实践

javascript - 用于旋转木马的 Jquery 函数循环(flowtext)

javascript - 如何在找到的 HTML 元素之前插入整个 css 类?

ios - 单击 TableView 中的按钮时从其他 View Controller 重新加载 UITableView

iphone - Xcode 上的所有设备目标都变为 "unavailble"

ios - 侧面菜单 俯 View

iphone - 如何从 iPhone 应用程序将值存储在 Web 服务器中

ios - iOS 上的 sortedArrayWithSelector 和 NSDictionnary

ios - 'NSInvalidArgumentException',原因:'-[__ NSMallocBlock__ size]:无法识别的选择器已发送到实例0x2098a5c0'