JQuery Ajax 计时

JQuery Ajax Timing

我有一个更大的 JQuery UI 对话框。在这里面我有一些更大的 PHP 脚本,它们填充了对话框内容。在 ESCAPE 上我关闭对话框。在每个之后:

$('.editbtn').click(function() {
  $id        = $(this).attr('name');
  var $tabid = $id.split("|");
  var $url   = "ajax/edit.php?....";

  $("#dialog-confirm").load($url);
  $("#dialog-confirm").dialog("option", "width",  $tabid[4]);
  $("#dialog-confirm").dialog("option", "height", $tabid[5]);
  $("#dialog-confirm").dialog('open');

  $("#dialog-confirm").first().focus();
});

我设置了焦点。

有时有效有时无效。这显然取决于 PHP 脚本的执行。我看到了包含旧内容(关闭后)的对话框,并在短暂的时间间隔后看到了新选择的内容。只要未显示新选择的内容,ESCAPE 就会起作用。如果对话框中充满了新内容,则 ESCAPE 不起作用。这实际上意味着对话框屏幕失去了焦点。

如果 PHP 脚本结束,我怎样才能确定只显示对话框?

提前致谢。

您可以通过定义完整的回调函数来简单地做到这一点。

$('.editbtn').click(function() {
  $id        = $(this).attr('name');
  var $tabid = $id.split("|");
  var $url   = "ajax/edit.php?....";

  $("#dialog-confirm").load($url, function() {
    $("#dialog-confirm").dialog("option", "width",  $tabid[4]);
    $("#dialog-confirm").dialog("option", "height", $tabid[5]);
    $("#dialog-confirm").dialog('open');

    $("#dialog-confirm").first().focus();
  });
});

而且,我建议您为 jQuery 对象定义一个变量以获得更好的性能。

var confirm = $("#dialog-confirm");

confirm.dialog("option", "width",  $tabid[4]);
confirm.dialog("option", "height", $tabid[5]);
confirm.dialog('open');

confirm.first().focus();