1

我正在添加另一个 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 设置动画。

这是小提琴

4

5 回答 5

2

当您使用$('#mapButton')它时,它会找到具有此类 id 的第一个元素。ID 应该是唯一的。使用类而不是 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/

于 2013-02-13T05:48:57.030 回答
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/

于 2013-02-13T05:49:07.500 回答
1

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

于 2013-02-13T05:49:34.973 回答
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 classjavascript

于 2013-02-13T05:50:07.703 回答
0

每个文档的 id 值必须是唯一的,因此您不能有多个 <div id="siteMap"> 或其他任何东西。

考虑改用类。即 <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.
      });
    }
  });
});
于 2013-02-13T05:47:47.753 回答