在移动设备上点击隐藏和显示 div

Posted

技术标签:

【中文标题】在移动设备上点击隐藏和显示 div【英文标题】:Hide and show div on click on mobile 【发布时间】:2015-12-01 23:32:21 【问题描述】:

我实际上是在尝试在点击时创建一个无限循环的 div。它可以在我的桌面上完美运行,但不能在移动浏览器上运行。出于某种原因,div 只是没有出现在移动浏览器上。这是我用来循环遍历 div 的 jQuery:

$("div").each(function(e) 
    if (e != 0)
        $(this).hide();
);

$('div').click(function()
    if ($("div:visible").next().length != 0)
        $("div:visible").next().show().prev().hide();
    else 
        $("div:visible").hide();
        $("div:first").show();
    
    return false;
);

这些 div 的 CSS 很简单,所以没有冲突:

div 
    margin: 0 auto;
    width: 100%;
    max-width: 1200px;

div img 
    width: 100%;
    display: block;

div:nth-child(1) 
    display: block;

【问题讨论】:

当您对所有可以找到 :visible 的 div 使用 .hide() 时?? @Mohamed-Yousef 在 CSS 中显示第一个 div,刚刚编辑了帖子。对此感到抱歉 即使你这样做,jquery 也会覆盖它并隐藏所有 div .. 所以不要使用 .each 并循环遍历 div 只需使用 $('div:not(:nth-child(1))' )。隐藏();此代码将隐藏所有 div,但不是第一个 @Mohamed-Yousef 它可以在桌面上运行,并且不会隐藏第一个 div。也许添加 !important to display: block 到第一个 div 可以解决移动设备上的问题? 【参考方案1】:

而不是通过 div 循环

// hide all divs but not the :nth-child(1)
$('div:not(:nth-child(1))').hide();
// or
$('div:not(:first)').hide();

还是用css代替js更好

div
   display : none;

div:nth-child(1) 
   display: block;

然后完成您的代码

$('div').click(function()
    if ($("div:visible").next().length !== 0)
        $("div:visible").next().show().prev().hide();
    else 
        $("div:visible").hide();
        $("div:first").show();
    
    //return false; no need to use
);

【讨论】:

这适用于桌面,就像以前的模型一样。但它仍然无法在移动设备上运行。循环不是无限的,它只经过一次。然后,当您单击最后一个 div 时,一切都消失了。 而在桌面浏览器上循环是无限的。有什么线索吗? @AustinBranham 好的,我把你的代码放在小提琴中,请用你的完整代码更新它jsfiddle.net/mohamedyousef1980/jxuqtfpn jsfiddle.net/daznmjaa 这是我的确切代码的更新小提琴,应用了类。 @AustinBranham 它在移动设备上运行良好.. 注意 3 .. chrome 浏览器

以上是关于在移动设备上点击隐藏和显示 div的主要内容,如果未能解决你的问题,请参考以下文章

使用媒体查询在移动设备上隐藏引导工具提示

Jquery:下拉菜单在移动设备上无法正常工作

Jquery显示/隐藏根本不在移动设备上工作

Jquery显示/隐藏根本不适用于移动设备

如何在移动设备上向上/向下滚动后“显示/隐藏”Bootstrap 3 内容?

移动设备上的悬停和点击事件