从右到左滑动div但只有一个div

时间:2013-02-13 05:42:35

标签: javascript jquery html css animation

我正在添加另一个div,但它无效。如果我添加另一个它应该工作:

HTML

<div id="siteMap">
  <div id="mapButton">button</div>
  <div id="theMap">content here</div>
</div>
<div id="siteMap" style="margin-top:90px;">
  <div id="mapButton">button</div>
  <div id="theMap">content here</div>
</div>

CSS

#siteMap {
  width:200px;
  position:fixed;
  right:-200px;
  top:0px;
  display:block;
  color:#FFF;
  z-index:2;
  opacity: 0.95;
}
#siteMap #mapButton {
  display:block;
  color:#333;
  background-color:#ACACAC;
  padding:2px 5px;
  height:20px;
  width:70px;
  text-align:center;
  position:relative;
  right: 24px;
  margin-top:80px;
  cursor:pointer;
  transform-origin: 0% 0%;
  -ms-transform-origin: 0% 0%;
  -webkit-transform-origin: 0% 0%;
  -moz-transform-origin: 0% 0%;
  -o-transform-origin: 0% 0%;
  transform: rotate(-90deg);
  -ms-transform: rotate(-90deg); 
  -webkit-transform: rotate(-90deg); 
  -moz-transform: rotate(-90deg); 
  -o-transform: rotate(-90deg);
}
#siteMap #theMap {
  width:100%;
  height:100px;
  background-color:#666;
  margin-top:-104px;
}

jQuery的:

$(document).ready(function() {
  $('#mapButton').click(function() {
    var mapPos = parseInt($('#siteMap').css('right'), 10);
    if (mapPos < 0) {
      $('#siteMap').animate({
        right: '+=200'
        }, 458, 'swing', function() {
          // Animation complete.
      });
    } else {
      $('#siteMap').animate({
        right: '-=200'
        }, 458, 'swing', function() {
          // Animation complete.
      });
    }
  });
});

如何解决这个问题?即使添加另一个div,我也需要它来动画这些div。

这是the fiddle

5 个答案:

答案 0 :(得分:2)

当您使用$('#mapButton')时,它会找到具有此ID的第一个元素。我应该是uniq。使用类而不是ID。

$(document).ready(function () {
  $('.mapButton').click(function () {
    var siteMap = $(this).parent();

    var mapPos = parseInt(siteMap.css('right'), 10);
    if (mapPos < 0) {
      siteMap.animate({
        right: '+=200'
      }, 458, 'swing', function () {
        // Animation complete.
      });
    } else {
      siteMap.animate({
        right: '-=200'
      }, 458, 'swing', function () {
        // Animation complete.
      });
    }
  });
});

工作演示:http://jsfiddle.net/xttaw/

答案 1 :(得分:2)

ID必须是唯一的,您应该使用类:

$('.mapButton').click(function() {
  var mapPos = parseInt($(this).parent().css('right'), 10);
  if (mapPos < 0) {
    $(this).parent().animate({
      right: '+=200'
      }, 458, 'swing', function() {
        // Animation complete.
      });
  }
  else {
    $(this).parent().animate({
      right: '-=200'
      }, 458, 'swing', function() {
        // Animation complete.
    });
  } 
});

http://jsfiddle.net/qGVfp/29/

答案 2 :(得分:1)

使用class而不是id,即使用class="siteMap"(CSS中为.siteMap)而不是id="siteMap"。并且还使用$(this).parent()来访问父元素。在此处查看更新的代码:http://jsfiddle.net/qGVfp/28/

答案 3 :(得分:1)

在此代码中

<div id="siteMap">
 <div id="mapButton">button</div>
 <div id="theMap">content here</div>
</div>
<div id="siteMap" style="margin-top:90px;">
 <div id="mapButton">button</div>
 <div id="theMap">content here</div>
</div>

您有两次相同的ID,例如<div id="mapButton"><div id="siteMap">

在HTMl中不建议多次使用相同的ID。

尝试使用css class撰写javascript

答案 4 :(得分:0)

每个文档的id值必须唯一,因此您不能有多个&lt; div id =“siteMap”&gt;或其他任何东西。

考虑使用类。也就是说,&lt; div class =“siteMap”......依此类推。相应地更新你的css和jquery选择器('.siteMap')

编辑:试试这个(未经测试)

<div class="siteMap">
  <div class="mapButton">button</div>
  <div class="theMap">content here</div>
</div>
<div class="siteMap" style="margin-top:90px;">
  <div class="mapButton">button</div>
  <div class="theMap">content here</div>
</div>



.siteMap {
  width:200px;
  position:fixed;
  right:-200px;
  top:0px;
  display:block;
  color:#FFF;
  z-index:2;
  opacity: 0.95;
}
.siteMap .mapButton {
  display:block;
  color:#333;
  background-color:#ACACAC;
  padding:2px 5px;
  height:20px;
  width:70px;
  text-align:center;
  position:relative;
  right: 24px;
  margin-top:80px;
  cursor:pointer;
  transform-origin: 0% 0%;
  -ms-transform-origin: 0% 0%;
  -webkit-transform-origin: 0% 0%;
  -moz-transform-origin: 0% 0%;
  -o-transform-origin: 0% 0%;
  transform: rotate(-90deg);
  -ms-transform: rotate(-90deg); 
  -webkit-transform: rotate(-90deg); 
  -moz-transform: rotate(-90deg); 
  -o-transform: rotate(-90deg);
}
.siteMap .theMap {
  width:100%;
  height:100px;
  background-color:#666;
  margin-top:-104px;
}





$(document).ready(function() {
  $('.mapButton').click(function() {
    var mapPos = parseInt($(this).parent().css('right'), 10);
    if (mapPos < 0) {
      $(this).parent().animate({
        right: '+=200'
        }, 458, 'swing', function() {
          // Animation complete.
      });
    } else {
      $(this).parent().animate({
        right: '-=200'
        }, 458, 'swing', function() {
          // Animation complete.
      });
    }
  });
});