Javascript 焦点为on的JQmodal不工作

Javascript 焦点为on的JQmodal不工作,javascript,jquery,html,ajax,jqmodal,Javascript,Jquery,Html,Ajax,Jqmodal,我正在加载一个带有ajax调用的JQmodal,其中包含一些基本的输入元素,如a、input、label和button。我需要添加一个自定义类的元素后,立即打开模态焦点 注意:请使用tab键聚焦每个元素 HTML <p><a href="html_images.asp">HTML Images</a> is a link to a page on this website.</p> <p><a href="http://www.

我正在加载一个带有ajax调用的JQmodal,其中包含一些基本的输入元素,如a、input、label和button。我需要添加一个自定义类的元素后,立即打开模态焦点

注意:请使用tab键聚焦每个元素

HTML

<p><a href="html_images.asp">HTML Images</a> is a link to a page on this website.</p>

<p><a href="http://www.w3.org/">W3C</a> is a link to a website on the World Wide Web.</p>

<a href="#" class="jqModal">view</a>
...
<div class="jqmWindow" id="dialog">
</div>
Java脚本

$(document).ready(function() {
     $('#dialog').jqm({ajax: 'https://raw.githubusercontent.com/jothikannan89/jqModal/ed840123588cf99ebe061e749e9774e64387ba7f/examples/ajax_tab.html'});
});

  $("a,input,button,select,textarea,.jqmClose").on('focus',
            function(event) {
                event.preventDefault();
                $(this).addClass('focused');
    });
    $("a,input,button,select,textarea,.jqmClose").on('blur',
            function(event) {
                event.preventDefault() ;
                $(this).removeClass('focused');     
    });
我得到的结果很奇怪,focus类正在为父页面元素添加内容,但没有将通过ajax加载的元素添加到模式中,但默认的focus正在工作

小提琴示例:

当您执行以下操作时:

 $("a,input,button,select,textarea,.jqmClose").on('focus',
       function(event) {
           event.preventDefault();
           $(this).addClass('focused');
  });
您的动态内容尚未加载到DOM中(这就是为什么您在主页上有预期的行为,但在模式内容中没有)。您必须等待ajax请求返回以附加事件处理程序

我不知道JQM是如何工作的,但它必须给您一个承诺或一种方法来传递一些回调

编辑

在JQM文档中,有一个onload回调:

加载ajax内容后立即调用onLoad(回调)


使用它将处理程序附加到onLoad函数中,这样就可以了。

感谢您的帮助,我已经更新了小提琴,您仍然可以在打开模态时看到,焦点仅对父页面元素起作用,有时它在弹出元素中起作用单击打开模态的视图检查小提琴,它在我的浏览器(Chrome)中运行良好,我尝试过多次重新加载,我没有问题:这可能是由于浏览器中的缓存造成的吗?首先打开模式,然后尝试通过元素进行制表。我没有问题:我加载小提琴,单击视图,然后视图链接保持焦点,所以我单击模式中的某个内容?此时会出现点边框,我可以使用选项卡,每个焦点项目都会显示点边框。也许是“点击模态中的某些内容”这一步让你感到困扰,但这里是一个选项卡导航问题,与以前不同。我有一个补丁,用于解决模态和ajax对话框的一些焦点和选项卡问题:
 $("a,input,button,select,textarea,.jqmClose").on('focus',
       function(event) {
           event.preventDefault();
           $(this).addClass('focused');
  });
// onLoad : assign Mike Alsup's most excellent ajaxForm plugin to the returned form element(s). 
var myLoad = function(hash){ $('form',hash.w).ajaxForm(); }; 
$('#dialog').jqm({onLoad:myLoad});