我在页面上有一个隐藏的div,需要在点击功能上打开它。
可点击链接位于引导程序弹出窗口内,因此如何通过单击弹出窗口内容链接来打开页面div。
这是Fiddle
$( "#open" ).click(function() {
$('.open-this').slideToggle("slow");
});
最佳答案
而不是此代码:
$( "#open" ).click(function() {
$('.open-this').slideToggle("slow");
});
尝试这个
$("body").on("click","#open",function(e) {
e.preventDefault();
$('.open-this').slideToggle("slow");
});
查看更新的小提琴http://jsfiddle.net/bfkLM/15/
您的代码上的问题是,当事件处理程序试图获取链接以将
click
事件附加到链接时,该链接是从您的代码生成的,而不是在dom中显示。因此解决方案是使用Delegated事件:
从官方jQuery网站
委派事件具有可以处理以下事件的优势:
后继元素添加到文档中的子元素。通过
选择一个保证在当前时间存在的元素
附加了委托事件处理程序,您可以使用委托事件来
避免需要频繁附加和删除事件处理程序。这个
元素可以是视图中的容器元素
例如,模型-视图-控制器设计或事件记录
处理程序希望监视文档中的所有冒泡事件。的
document元素位于文档开头之前
加载任何其他HTML,因此可以安全地在其中附加事件
等待文档准备就绪。
这就是为什么我的新代码可以工作的原因,因为它将事件处理程序附加到
body
标记并检查click事件是否来自我的目标元素(open
),当发生这种情况时,它将触发我的代码,并且弹出窗口将显示还有一件事,使用
e.preventDefault();
是为了防止页面导航到锚点的href
属性。关于javascript - 从引导弹出窗口打开隐藏的div,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19158364/