如何将事件绑定到弹出窗口?

时间:2013-03-12 01:52:39

标签: javascript jquery events

我似乎无法将事件绑定到弹出窗口。这样做的正确方法是什么?我知道你必须通过你想要绑定事件的窗口,但我似乎无法在任何地方找到的任何信息 - 一直在搜索过去一小时的信息,但我甚至没有一个链接显示我的努力。以下是我的一些尝试:

// the popup window is referenced by "display.window"
// #map is a <canvas> element occupying 100% of the new window

// I'll just try passing in the context first...
$(display.window, "#map").keydown(function(e) {
    // do stuff
});

// maybe the other way around?
$("#map", display.window).keydown(function(e) {
    // do stuff
});

// what if I just try to add the event right to the window?
$(display.window).keydown(function(e) {
    // do stuff
});

// nope, maybe bind will do the trick
$(display.window).bind(function(e) {
    // do stuff
});

// maybe the new window's DOM isn't loaded yet?
$(display.window).ready(function() {
    $(this).keypress(function(e) {
        // do stuff
    });
});

这些都没有奏效。我错过了什么?

1 个答案:

答案 0 :(得分:3)

我认为您需要在用于创建弹出窗口的代码中执行此操作,看到该部分代码会很高兴。

此外,目前推荐的订阅事件的方法是使用.on() jQuery方法。

http://api.jquery.com/on/

$(display.window).on('keydown', function(e) {
    //Good stuff here
});

完全没有经过考验,希望这能帮助你走上正确的道路。


我发生了另一件事,你真的需要弹出窗口吗?这就是弹出窗口阻止程序之类的问题...你可能最好实现一个很好的模态窗口解决方案,然后你的“窗口”将是同一个DOM的一部分,这应该使创建事件监听器变得微不足道。 / p>

jQuery UI有一个很好的“对话框”小部件

http://jqueryui.com/dialog/