javascript - jQuery .show 问题(Safari iPad)

标签 javascript jquery html css ipad

我最近开始学习 jQuery 并一直在开发一个响应式轮播来练习,但是我遇到了一个奇怪的问题,即 .show() 在 iPad 的 Safari 上似乎无法正常工作。

我遇到的问题是,当我单击向左箭头时,我希望显示第二张幻灯片,但这似乎不起作用(适用于所有其他浏览器,包括 iPad 版 Chrome),如果我将代码更改为显示第三张幻灯片而不是第二张幻灯片效果很好,所以我认为问题与显示直系兄弟有关。

html

<div class="wrapper">  
<div class="carousel">
    <div class="inner">
        <div class="slide" data-index="1"></div>
        <div class="slide" data-index="2"></div>
        <div class="slide" data-index="3"></div>
    </div>
    <div class="arrow left"></div>
    <div class="arrow right"></div>
</div>

CSS

.wrapper {
    max-width: 1200px;
    margin: 0 auto; 
    position: relative;
    width: 100%;
 }

.carousel {
    padding-top: 40%; /*((slide-height/max-width)*100)*/
    position: relative;
    width: 100%;
 }

.inner {
    height: 100%;
    left: 0;
    position: absolute;
    top: 0;
    width: 100%;
 }

.slide {
    background-size: 100%;
    display: none;
    height: 100%;
    left: 0;
    position: absolute;
    top: 0;
    width: 100%;
    overflow: auto;
 }

    .slide:nth-child(1) {
        background-image: url("http://i58.tinypic.com/14mqkpe.png");
        display: block;
    }

    .slide:nth-child(2) {background-image: url("http://i62.tinypic.com/11t5t1h.png")}

    .slide:nth-child(3) {background-image: url("http://i57.tinypic.com/2pquruu.png")}   

.arrow {
    border-top: 3px solid #fff;
    cursor: pointer;
    padding-top: 2%;
    position: absolute;
    top: 50%;
    width: 2%;
 }

    .arrow.left {
        -moz-transform-origin: 0 0;
        -moz-transform: rotate(-45deg);
        -webkit-transform-origin: 0 0;
        -webkit-transform: rotate(-45deg);
        border-left: 3px solid #fff;
        left: 2%;
        transform-origin: 0 0;
        transform: rotate(-45deg);
     }

    .arrow.right {
        -moz-transform-origin: 100% 0;
        -moz-transform: rotate(45deg);
        -webkit-transform-origin: 100% 0;
        -webkit-transform: rotate(45deg);
        border-right: 3px solid #fff;
        right: 2%;
        transform-origin: 100% 0;
        transform: rotate(45deg);
     }

jQuery

;(function ( $, window, document, undefined ) {
    var pluginName = "Carousel",
        defaults = {           
        };

    function update_slides(element, options){   
    };

    function Plugin( element, options ) {
        this.element = $(element);

        this.options = $.extend( {}, defaults, options) ; 

        var initials = {        
        }

        $.extend( {}, initials, this.options);    

        this._defaults = defaults;
        this._name = pluginName;

        this.init();        
    }

    Plugin.prototype = {

        init: function() {
            this.manual_navigation(this.element, this.options)
        },

        manual_navigation: function( element, options ) {
            element.find('.arrow.left').click(function() {
                element.find('.slide[data-index="1"]').removeClass('show');
                element.find('.slide[data-index="1"]').addClass('hide');
                element.find('.slide[data-index="2"]').removeClass('hide');
                element.find('.slide[data-index="2"]').addClass('show');
            });
            element.find('.arrow.right').click(function() {
                element.find('.slide[data-index="3"]').show();
            });
        }
    };

    $.fn[pluginName] = function ( options ) {
        return this.each(function () {
            if (!$.data(this, "plugin_" + pluginName)) {
                $.data(this, "plugin_" + pluginName,
                new Plugin( this, options ));
            }
        });
    };

})( jQuery, window, document );

$(document).ready(function() {
    $(".carousel").Carousel();
}); 

我认为这个问题可能与宽度为 100% 的 .wrapper 有关,因为如果我将它更改为 50%,一切似乎都有效,不幸的是,我想在其上使用轮播的网站需要宽度为 100 %.

感谢您的浏览,希望之前有人遇到过类似的问题。

最佳答案

创建两个CSS类

.show
{
display:none!important;
}
.hide
{
display:block!important;
}

现在当您想要隐藏或显示时在类之间切换。

例子

if($(selector).hasClass('show')){
$(selector).removeClass('show');
$(selector).addClass('hide');
}else{
{
$(selector).removeClass('hide');
$(selector).addClass('show');
}

另一个用户遇到了类似的问题并得到解决

replacing css "display:none" value with "display:flex using js

关于javascript - jQuery .show 问题(Safari iPad),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211249/

相关文章:

javascript - JavaScript 语法 foo : mean? 是什么意思

javascript - 有条件取决于风格

jquery - 根据用户输入使用 Jquery 显示/隐藏字段

html - CSS 无法在 Chrome 和 Firefox 中正确显示

javascript - 使用javascript以编程方式更改PDF页面?

javascript - Shelljs:如何取消异步进程?

javascript - 如何使用javascript检测数据表分页其他页面中的复选框?

javascript - Jquery从左到右滑动不起作用

javascript - 如何在文本字段中添加选中的复选框

jquery - 从表行的子元素中删除 jquery click 事件处理程序