我在页面上有一个隐藏的div,需要在点击功能上打开。
可点击链接位于引导程序弹出框内,因此如何通过单击弹出链接内容链接来打开页面div。
这是 Fiddle
$( "#open" ).click(function() {
$('.open-this').slideToggle("slow");
});
答案 0 :(得分:2)
代替此代码:
$( "#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中。
所以解决方案是使用委托事件: 来自官方; jquery网站
委派事件的优势在于它们可以处理来自的事件 稍后添加到文档中的后代元素。通过 选择一个保证在当时存在的元素 委托事件处理程序附加,您可以使用委托事件 避免频繁附加和删除事件处理程序的需要。这个 element可以是a中视图的容器元素 例如,模型 - 视图 - 控制器设计,或者如果事件是文档 handler希望监视文档中的所有冒泡事件。该 文档元素在之前的文档头部中可用 加载任何其他HTML,因此可以安全地在那里附加事件 等待文件准备好。
这就是我的新代码可以工作的原因,因为它将事件处理程序附加到body
标记并检查单击事件来自我的目标元素(open
),当发生这种情况时它会触发我的代码和弹出窗口将显示
另外一件事,使用e.preventDefault();
是为了防止页面导航到锚点的href
属性。
答案 1 :(得分:0)
该事件未附加到链接上,因为我猜您在文档准备就绪后没有这样做。
出于测试目的,我已将onclick功能添加到链接
onclick="$(\'.open-this\').slideToggle("slow");return false;"
并且有效。
解决方案:
$(function(){
$( "#open" ).click(function() {
$('.open-this').slideToggle("slow");
return false;
});
});