我希望在单击按钮时从浏览器的左边缘滑动面板,并在单击相同的按钮(切换)时隐藏面板.
<div class="panel"> </div> <a href="javascript:void(0);" class="slider-arrow show">»</a>
CSS
.panel { width:300px; float:left; height:550px; background:#d9dada; position:relative; left:-300px; } .slider-arrow { padding:5px; width:10px; float:left; background:#d9dada; font:400 12px Arial,Helvetica,sans-serif; color:#000; text-decoration:none; position:relative; left:-300px; }
jQuery的
$(function(){ $('.slider-arrow.show').click(function(){ $( ".slider-arrow,.panel" ).animate({ left: "+=300" },700,function() { // Animation complete. }); $(this).html('«').removeClass('show').addClass('hide'); }); $('.slider-arrow.hide').click(function(){ $( ".slider-arrow,.panel" ).animate({ left: "-=300" },function() { // Animation complete. }); $(this).html('»').removeClass('hide').addClass('show'); }); });
它显示面板但不隐藏面板.使用选择器有任何问题吗?
解决方法
正如其他人在jQuery中所述,一旦文档被初始化,它只会查找最初存在的元素.因此,每次都会运行.show函数.
而不是在.slider-arrow.show上查找单击事件,您可以查看.slider-arrow,然后在单击此类示例后检查类.
$(function(){ $('.slider-arrow').click(function(){ if($(this).hasClass('show')){ $( ".slider-arrow,function() { // Animation complete. }); $(this).html('«').removeClass('show').addClass('hide'); } else { $( ".slider-arrow,function() { // Animation complete. }); $(this).html('»').removeClass('hide').addClass('show'); } }); });