我正在接受其他人创建的JQuery项目(总是很有趣)。
原作者似乎在页面元素上翻转时创建了一个弹出窗口。 popover有按钮,例如“类= deleteBtn”。最初,我无法通过典型的jQuery选择器“on”方法获得此链接以响应点击,因此我必须这样做:
$(document).on('click', '.deleteBtn', function () {
alert('foo')
});
这确实显示了警报。但是,现在我需要在此弹出窗口中隐藏和显示元素,并且我再次遇到选择器问题。例如,这不起作用:
$(document).on('click', '.deleteBtn', function () {
$('.prompt1').hide();
});
其中prompt1是popover中的第一个div,是.deleteBtn的祖先。
我在这里缺少什么?
答案 0 :(得分:1)
最重要的是,在你开始攻击之前,花时间去理解之前程序员的想法。不要只是在代码顶部拍打代码,然后在“不起作用”时感到沮丧。尊重前任开发人员的努力。研究并理解他们的代码;深入了解他们用来解决问题并满足要求的系统。
有人说......
我的第一个直觉是有其他事件绑定到有问题的DOM元素,并且通常它们包含对event.preventDefault()的调用。这可能会阻止您的事件被解雇。
这些元素附加了哪些其他事件?将click事件附加到文档并确定.deleteBtn类的范围很奇怪;还有别的事情发生了。事件委托是否用于这些弹出窗口?如果是这样,委派的活动可能会覆盖您的活动。
当你说“popover”时,这意味着一个单独的浏览器窗口(还记得那些旧的“popunder”广告吗?)。你的意思是这个,一个弹出窗口还是一个模态?如果您正在谈论弹出窗口或模态,他们可能使用了模式插件,如灯箱。如果是这样,请尝试确定他们用于创建弹出窗口的插件。如果它们是自定义的,请仔细查看用于显示和隐藏它们的系统。
检查您的CSS是否有 z-index 设置。不能告诉你有多少次我被这个人咬了。使用不正确的z-index设置时,div 正确显示...但在其他内容下方!请记住,要使z-index工作,容器div必须设置位置样式;例如位置:相对,位置:绝对等。
您收到任何错误吗?
希望这有帮助!