轻松切换jquery / html / css3无法正常工作

时间:2014-05-30 18:07:07

标签: javascript jquery html css css3

JSfiddle

这是我想要做的事情的小提琴。我试图使用除了jquery之外的纯css来切换适当的类,让css转换处理其余的。我知道旧的IE不支持这一点,这对我来说很好。

正在发生的事情是,当我单击链接文本时,滑块的开/关移动并轻松就可以了。然而,当我按下按钮的实际滑块部分时,它突然移动而没有缓和。这是代码:

HTML

<a href="#" class="on-off">
    <span class="on">ON</span>
    <span class="off">OFF</span>
    <span class="slider right ease"></span>
</a>

CSS

.on-off {
display: inline-block;
position: relative;
padding: 5px;
background: #ff8600;
border-radius: 5px;
border: 1px solid #b8baba;
 }

 .on-off .on {
margin-right: 10px;
 }

 .slider {
position: absolute;
width: 50%;
height: 100%;
background: #fff;
z-index: 2;
border-radius: 5px;
border: 1px solid #b8baba;
 }

 .right {
top: 0;
right: 0;
 }

 .left {
top: 0;
right: 50%;
 }

.ease {
-webkit-transition: all .5s ease;
  -moz-transition:    all .5s ease;
  -ms-transition:     all .5s ease;
  -o-transition:      all .5s ease;
  transition:      all .5s ease;
 }

的Javascript

$('.on-off').on('click', function() {
    $slider = $('.slider');
    if ($slider.hasClass('right')) {
        $('.slider').removeClass('right');
        $('.slider').addClass('left');
    } else {
        $('.slider').removeClass('left');
        $('.slider').addClass('right');
    }
})

这适用于chrome / firefox就好了。不是IE10 / 11。我试图使用优雅的降级。保持轻量级,所以如果css可以处理它不使用javascript,它也有基本的功能,它可能只是在不支持的浏览器中切换而不是轻松。我知道IE10 / 11支持轻松,因为它正在工作。当我点击按钮的特定区域时,就不行了。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

嘿,这听起来很愚蠢,但这是解决方案

$('.on-off').on('click', function() {
    $slider = $('.slider');
    if ($slider.hasClass('right')) {
        $('.slider').addClass('left');
        $('.slider').removeClass('right');
    } else {
        $('.slider').addClass('right');
        $('.slider').removeClass('left');
    }
});

在删除之前添加,并在函数中添加分号。