0

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

// 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
    });
});

这些都不起作用。我错过了什么?

4

1 回答 1

3

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

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

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

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

完全未经测试,希望这可以帮助您走上正确的道路。


我想到的另一件事,你真的需要一个弹出窗口吗?那是从弹出窗口阻止程序之类的问题中找麻烦...您最好实现一个不错的模态窗口解决方案,然后您的“窗口”将成为同一个 DOM 的一部分,这应该使创建事件侦听器变得微不足道。

jQuery UI 有一个不错的“对话框”小部件

http://jqueryui.com/dialog/

于 2013-03-12T01:58:58.763 回答