如何在jquery中切换单击功能

时间:2013-06-25 09:57:28

标签: jquery html css touch modernizr

我有以下代码

HTML

<a href="#" class="button">button</a>

<div class="holder">

    <img src="http://placehold.it/350x150" />
    <div class="content">
        <h3>hello there</h3>    
        <a href="#">view more</a>        
    <div/>    

</div>

CSS

.holder {
    margin-top: 130px;
    position: relative;
}
img {    
    position: relative;
    display: block;
    transition: -webkit-transform 0.5s;
    transition: -moz-transform 0.5s;
    z-index: 10;
}
.content {
    background: blue;
    height: 100%;
    color: white;
    z-index: 1;
    position: absolute;
    top: auto;
    bottom: 0;
}
a {
    color: white;
    background: red;
    padding: 10px;
}

.holder:hover img {
    -webkit-transform: translateX(90px);
    -moz-transform: translateX(90px);
}
.button {
    background: green;
    position: absolute;
    top: 10px;
}

JQuery的

   if (Modernizr.touch) {
    alert("touch support");
}

else {
     alert("no touch support");

    $('.button').toggle(
     function(){
             $('img').css({
              '-webkit-transform' : 'translateX(90px)',
               '-moz-transform' : 'translateX(90px)'                 
             }); 
    },
    function(){
     $('img').css({
             '-webkit-transform' : 'translateX(-90px)',
             '-moz-transform' : 'translateX(-90px)'                 

            }); 
    });
}

我正在使用现代化器来检测触摸设备。在此代码中,当用户将鼠标悬停在图像上时,它会显示.content类,并且我正在尝试使用jquery为触摸设备复制它,因为悬停不适用于触摸设备。(为了检查jquery代码,我有编写代码以使用非触摸设备)

我的问题是1)此代码是否正确; 2)编写jquery代码以通过单击更改图像的位置。而不是按钮消失。

这是我用纯css做的 - &gt; jsfiddle-css

这就是我想用jquery复制的东西,这是不行的 - &gt; jsfiddle with jquery

2 个答案:

答案 0 :(得分:1)

这可能是一种方式:

if (Modernizr.touch) {
    alert("touch support");
} else {
    alert("no touch ");
    var cssChanged = false; // remember wether the css has been changed
    // Note: I use true/false, but you could also use a counter, so you can make each Nth click do something
    $('.button').click(function(){
        if(cssChanged===false)
            $('img').css({
                 '-webkit-transform' : 'translateX(90px)',
                 '-moz-transform' : 'translateX(90px)'                 
             });
            cssChanged = true; // remember css has been changed
        }
        else{
          $('img').css({
                 '-webkit-transform' : "",
                 '-moz-transform' :""                
             });
            cssChanged = false; // set var back to unchanged
        }
    });
}

答案 1 :(得分:1)

<强> F.Y.I。仅

要解决当前的issue,请使用jQuery Migrate plugin

使用插件很容易;例如,只需在jQuery的脚本标记之后包含它。

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

有关详细信息,请参阅jQuery Migrate documentation

FIDDLE DEMO