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/xttw/

于 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

id の代わりに class を使用します。つまり、 の代わりにclass="siteMap"( .siteMapCSS で) を使用し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を2回持ってい<div id="mapButton">ます <div id="siteMap">

HTMl で同じ ID を複数回使用することはお勧めしません。

css class書いてみるjavascript

于 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 に答える