我正在开发一个相当依赖 jQuery 的 Web 应用程序。我有一个结构如下的选择:
<select id='task_id'>
<option value=''>Select</option>
<option value='0001'>First Task</option>
<option value='0002'>Second Task</option>
<option value='addnew'>Add New...</option>
</select>
而且我还有一些 jQuery,当有人选择“添加新...”时会打开一个新窗口,这样他们就可以在另一个页面上输入详细信息。
var newTask;
$("select").change(function(){
if( $(this).val() == "addnew" ){
if( newTask )
newTask.close();
newTask = window.open( "/projects/add-task", "newTask", "width=990,height=600" );
} else {
if(newTask)
newTask.close();
}
我想从父窗口添加一个事件处理程序到子窗口上的表单提交按钮,这样当有人提交表单(即他们完成添加)时,窗口将关闭。我所拥有的是:
$("form", newTask.document).submit(function(){
newTask.close();
});
});
就其本身而言,它不起作用,但它不会引发任何错误。如果我打开 Chrome Inspector 并逐行运行以下命令,它的行为会略有不同:
1. var newWin = window.open("/projects/new");
2. $("form", newWin.document).submit(function(){
newWin.close();
});
我想我的问题是为什么它不起作用,除非我通过控制台逐行手动运行它,我该如何解决?