在加载后创建的对象上使用jQuery选择器

时间:2013-12-17 14:20:13

标签: javascript jquery twitter-bootstrap jquery-selectors

我正在接受其他人创建的JQuery项目(总是很有趣)。

原作者似乎在页面元素上翻转时创建了一个弹出窗口。 popover有按钮,例如“类= deleteBtn”。最初,我无法通过典型的jQuery选择器“on”方法获得此链接以响应点击,因此我必须这样做:

$(document).on('click', '.deleteBtn', function () {
        alert('foo')         
    });

这确实显示了警报。但是,现在我需要在此弹出窗口中隐藏和显示元素,并且我再次遇到选择器问题。例如,这不起作用:

$(document).on('click', '.deleteBtn', function () {
        $('.prompt1').hide();
    });

其中prompt1是popover中的第一个div,是.deleteBtn的祖先。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

最重要的是,在你开始攻击之前,花时间去理解之前程序员的想法。不要只是在代码顶部拍打代码,然后在“不起作用”时感到沮丧。尊重前任开发人员的努力。研究并理解他们的代码;深入了解他们用来解决问题并满足要求的系统。

有人说......

  1. 我的第一个直觉是有其他事件绑定到有问题的DOM元素,并且通常它们包含对event.preventDefault()的调用。这可能会阻止您的事件被解雇。

  2. 这些元素附加了哪些其他事件?将click事件附加到文档并确定.deleteBtn类的范围很奇怪;还有别的事情发生了。事件委托是否用于这些弹出窗口?如果是这样,委派的活动可能会覆盖您的活动。

  3. 当你说“popover”时,这意味着一个单独的浏览器窗口(还记得那些旧的“popunder”广告吗?)。你的意思是这个,一个弹出窗口还是一个模态?如果您正在谈论弹出窗口或模态,他们可能使用了模式插件,如灯箱。如果是这样,请尝试确定他们用于创建弹出窗口的插件。如果它们是自定义的,请仔细查看用于显示和隐藏它们的系统。

  4. 检查您的CSS是否有 z-index 设置。不能告诉你有多少次我被这个人咬了。使用不正确的z-index设置时,div 正确显示...但在其他内容下方!请记住,要使z-index工作,容器div必须设置位置样式;例如位置:相对,位置:绝对等。

  5. 您收到任何错误吗?

  6. 希望这有帮助!