下次滑动div触发时重置水平滑动div位置
Reset horizontal sliding div position when next sliding div is triggered
我的页面很长。我想把它分成 4 个迷你页面(divs),然后使用文本导航从一页 div 滑动到下一页。还有一个关闭按钮,可以隐藏所有 div 并显示下面的原始页面。
我遇到的问题是,当用户单击 link 到下一个 div 时,前一个 div 不会自行重置,就好像它从未被单击过一样.第一次点击 say "Page 2" 时,第 2 页 div 从左侧滑入,没问题。但是如果你稍后再点击它,div 只是出现,没有滑动动画。
我想使用 removeAttr("style");会完全按照我的意愿行事,但在这种情况下似乎行不通。
这是我的 jQuery:
$(".page-link").bind("click", function() {
$(".ntc-pages").fadeOut(1000);
// THIS DOESN'T WORK
// $(this).removeAttr('style');
var divId= $(this).attr("divId");
$("#" + divId).animate({
opacity: 1,
left: "0",
height: "toggle"},
500, function() {
});
});
和我的 HTML:
<a class="page-link" href="javascript:void(0);" divId="pg1">
<h4>PAGE 1</h4>
</a>
<a class="page-link" href="javascript:void(0);" divId="pg2">
<h4>PAGE 2</h4>
</a>
<a class="page-link" href="javascript:void(0);" divId="pg3">
<h4>PAGE 3</h4>
</a>
<a class="page-link" href="javascript:void(0);" divId="pg4">
<h4>PAGE 4</h4>
</a>
<div class="ntc-pages" id="pg1">PAGE 1<a class="page-link" href="javascript:void(0);" divId="pg2"> PAGE 2</a>
<a class="back-ntc" href="javascript:void(0);">Back</a>
</div>
<div class="ntc-pages" id="pg2">PAGE 2<a class="page-link" href="javascript:void(0);" divId="pg3"> PAGE 3</a>
<a class="back-ntc" href="javascript:void(0);">Back</a>
</div>
<div class="ntc-pages" id="pg3">PAGE 3<a class="page-link" href="javascript:void(0);" divId="pg4"> PAGE 4</a>
<a class="back-ntc" href="javascript:void(0);">Back</a>
</div>
<div class="ntc-pages" id="pg4">PAGE 4<a class="page-link" href="javascript:void(0);" divId="pg1"> PAGE 1</a>
<a class="back-ntc" href="javascript:void(0);">Back</a>
</div>
以及 JS Fiddle 现在的工作原理。
你的问题的原因是你从来没有 return 动画 div 回到它的原始位置(左边 -1200px),所以当你下次去动画它时,它已经在那里(左边 0px),这就是滑动似乎不起作用的原因。
还有几件事要注意:
- 而不是使用
divID
,使用类似数据属性的东西会更正确,例如 data-page="1"
并由 $("#someID").data("page")
引用
- 不是在你的锚点上使用
href="javascript:void(0);"
,而是在你的 JS 代码中你可以传入事件对象,例如 $(".page-link").click(function(e) {...});
并使用 e.preventDefault();
来停止链接执行
- 不要绑定点击功能,只需使用 jQuery 点击,就像我在最后一点所做的那样
- 如果你想用 JS 改变对象的样式,你可以使用
$(".myClass").css("left", "-1200px");
因此,为了快速解决您的问题,您可以将 $(".ntc-pages").css("left", "-1200px");
添加到绑定函数回调的顶部,但我建议您也仔细阅读并添加上述一些建议。
这是添加了上述行的 jsfiddle:https://jsfiddle.net/ens28yxp/
我的页面很长。我想把它分成 4 个迷你页面(divs),然后使用文本导航从一页 div 滑动到下一页。还有一个关闭按钮,可以隐藏所有 div 并显示下面的原始页面。
我遇到的问题是,当用户单击 link 到下一个 div 时,前一个 div 不会自行重置,就好像它从未被单击过一样.第一次点击 say "Page 2" 时,第 2 页 div 从左侧滑入,没问题。但是如果你稍后再点击它,div 只是出现,没有滑动动画。
我想使用 removeAttr("style");会完全按照我的意愿行事,但在这种情况下似乎行不通。
这是我的 jQuery:
$(".page-link").bind("click", function() {
$(".ntc-pages").fadeOut(1000);
// THIS DOESN'T WORK
// $(this).removeAttr('style');
var divId= $(this).attr("divId");
$("#" + divId).animate({
opacity: 1,
left: "0",
height: "toggle"},
500, function() {
});
});
和我的 HTML:
<a class="page-link" href="javascript:void(0);" divId="pg1">
<h4>PAGE 1</h4>
</a>
<a class="page-link" href="javascript:void(0);" divId="pg2">
<h4>PAGE 2</h4>
</a>
<a class="page-link" href="javascript:void(0);" divId="pg3">
<h4>PAGE 3</h4>
</a>
<a class="page-link" href="javascript:void(0);" divId="pg4">
<h4>PAGE 4</h4>
</a>
<div class="ntc-pages" id="pg1">PAGE 1<a class="page-link" href="javascript:void(0);" divId="pg2"> PAGE 2</a>
<a class="back-ntc" href="javascript:void(0);">Back</a>
</div>
<div class="ntc-pages" id="pg2">PAGE 2<a class="page-link" href="javascript:void(0);" divId="pg3"> PAGE 3</a>
<a class="back-ntc" href="javascript:void(0);">Back</a>
</div>
<div class="ntc-pages" id="pg3">PAGE 3<a class="page-link" href="javascript:void(0);" divId="pg4"> PAGE 4</a>
<a class="back-ntc" href="javascript:void(0);">Back</a>
</div>
<div class="ntc-pages" id="pg4">PAGE 4<a class="page-link" href="javascript:void(0);" divId="pg1"> PAGE 1</a>
<a class="back-ntc" href="javascript:void(0);">Back</a>
</div>
以及 JS Fiddle 现在的工作原理。
你的问题的原因是你从来没有 return 动画 div 回到它的原始位置(左边 -1200px),所以当你下次去动画它时,它已经在那里(左边 0px),这就是滑动似乎不起作用的原因。
还有几件事要注意:
- 而不是使用
divID
,使用类似数据属性的东西会更正确,例如data-page="1"
并由$("#someID").data("page")
引用
- 不是在你的锚点上使用
href="javascript:void(0);"
,而是在你的 JS 代码中你可以传入事件对象,例如$(".page-link").click(function(e) {...});
并使用e.preventDefault();
来停止链接执行 - 不要绑定点击功能,只需使用 jQuery 点击,就像我在最后一点所做的那样
- 如果你想用 JS 改变对象的样式,你可以使用
$(".myClass").css("left", "-1200px");
因此,为了快速解决您的问题,您可以将 $(".ntc-pages").css("left", "-1200px");
添加到绑定函数回调的顶部,但我建议您也仔细阅读并添加上述一些建议。
这是添加了上述行的 jsfiddle:https://jsfiddle.net/ens28yxp/