jQuery DOM 遍历而不重新加载页面
jQuery DOM traversal without reloading the page
我正在尝试放置一个div
,在DOM中向上遍历,使用jQuery的.insertAfter()
方法进行单击事件。除了事件触发时页面重新加载之外,一切正常。
$(document).ready(function() {
$('.sidebar_menu_resp_gift a').click(function(event) {
$('.sidebar').insertAfter('.sidebar_menu_resp_gift');
event.preventDefault();
$('.sidebar .side_box_1').slideToggle();
});
$('.sidebar_menu_resp_occassion a').click(function(event) {
$('.sidebar').insertAfter('.sidebar_menu_resp_occassion');
event.preventDefault();
$('.sidebar .side_box_2').slideToggle();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="sidebar_menu_resp_gift">
<a href="#">Menu 1</a>
</div>
<div class="sidebar_menu_resp_occassion">
<a href="#">Menu 2</a>
</div>
<div class="sidebar">
<div class="side_box_1">
<ul>
<li>something 1</li>
<li>something 2</li>
<li>something 3</li>
<li>something 4</li>
</ul>
</div>
<div class="side_box_2">
<ul>
<li>something 5</li>
<li>something 6</li>
<li>something 7</li>
<li>something 8</li>
</ul>
</div>
</div>
</div>
我真正想要实现的是,当点击(.sidebar_menu_resp_gift a
)时,必须立即向下滑动(.side_box_1
)在它下面推动下面的所有东西。 同样,在(.sidebar_menu_resp_occassion a
)的情况下,(.side_box_2
)也必须下降到它下面。但是我side_boxdiv的下拉菜单,它实际上在HTML中。所以我决定使用.insertAfter()
.但它在单击事件时重新加载页面。有什么出路吗?
提前致谢
你应该使用 .live() 或 .on() 而不是 .click();
我会这样写:
$(document).ready(function(){
$('.sidebar_menu_resp_gift').on('click','a',function(event){
event.preventDefault();
$(this).next().slideToggle();
});
$('.sidebar_menu_resp_occassion').on('click','a',function(event){
event.preventDefault();
$(this).next().slideToggle();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="sidebar_menu_resp_gift">
<a href="#">Menu 1</a>
<div class="side_box_1">
<ul>
<li>something 1</li>
<li>something 2</li>
<li>something 3</li>
<li>something 4</li>
</ul>
</div>
</div>
<div class="sidebar_menu_resp_occassion">
<a href="#">Menu 2</a>
<div class="side_box_2">
<ul>
<li>something 5</li>
<li>something 6</li>
<li>something 7</li>
<li>something 8</li>
</ul>
</div>
</div>
相关文章:
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 更改css链接并等待加载新的css
- 如何在Ajax加载新内容时停止JavaScript执行
- 当在ng视图中加载新路由时,Tabbing(tabindex)针对错误的元素
- 如何使用输入数据加载新的extjs图表
- JQuery Masonry.Ajax图标和“;加载新项目”;绳子放错地方了
- 通过javascript在同一个打开的选项卡中重新加载新的网页内容
- 当用户到达页面右侧时加载新内容
- 数据表 AJAX 筛选器重新加载数据
- 超链接单击以加载新页面并执行JavaScript
- 单击时加载新的 SVG
- 在RadWindow中加载新页面,然后从加载的窗体中关闭窗口
- ajax在页面刷新之前不会加载新的sql结果
- 谷歌地图API-在从ajax页面加载新数据之前清除标记、多段线
- 使用Ajax加载页面,并在必要时加载新脚本
- 加载新页面时的过渡效果,AJAX
- Ajax没有正确加载新页面
- 正在加载新的Javascript,但正在调用旧的Javascript.MVC
- 咕噜咕噜的手表:实时加载重新加载落后 1 步....
- 我怎么能有一个花哨的盒子一样的弹出体加载,但与cookie不连续加载重新加载