2013-02-13 87 views
1

我正在添加另一個div,它不起作用。如果我再添它應該工作:從右向左滑動div,但只有一個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

首先,定義相同的ID 2次所有,但ID必須是唯一的。你不能兩次定義相同的id。 – 2013-02-13 05:50:59

+0

你可以試試這個教程更好的結果 http://www.themeswild.com/read/slide-navigation-left-to-right – 2016-09-30 07:13:10

回答

0

id值必須是唯一的每個文檔,所以你不能有多個< div id =「siteMap」>或其他任何東西。

請考慮使用類。也就是說,< div class =「siteMap」...等等。相應地更新你的CSS和jQuery選擇器( '.siteMap')

編輯:當您使用$('#mapButton')發現此類ID的第一個元素嘗試這種(未經測試)

<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. 
     }); 
    } 
    }); 
}); 
2

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

+0

感謝您斯佩蘭斯基DANIL – 2013-02-13 05:54:34

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/

+0

太感謝你了dfsq – 2013-02-13 05:50:43

+0

您好,請問有什麼當我點擊按鈕外部時,它會關閉所有內容。 – 2013-02-14 01:56:13

1

使用類,而不是IDS,即使用class="siteMap".siteMap在CSS中)而不是id="siteMap"。還可以利用$(this).parent()訪問父元素。請在這裏更新的代碼:http://jsfiddle.net/qGVfp/28/

+1

也感謝你Harshith J.V. – 2013-02-13 05:52:08

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多次在HTML中<div id="mapButton"><div id="siteMap">

相同的ID。

嘗試使用css classjavascript

+0

謝謝我現在明白了Pradeep – 2013-02-13 05:55:08

+0

評論時,投了票。提供反饋是件好事 – NPKR 2013-02-13 06:10:57