我正在添加另一个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。
答案 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.
});
}
});
});
答案 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.
});
}
});
答案 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.
});
}
});
});