2010-10-26 37 views
2

我有一系列DIV元素,当点击,触发DOMWindow打开事件的。那里没问题。.focus()不工作一DOMWindow()[JQuery的]

然后我不得不添加键盘辅助功能。 DOH !!

我加的tabindex属性的DIV,它允许用户使用Tab键从一个DIV到下了,我增加了一个按键处理,处理Enter键。那里没问题。

我遇到的问题是试图将焦点设置回用户在打开Enter键并打开DOMWindow时所处的div(以便它们可以继续切换到系列中的下一个DIV) 。

我尝试添加一个功能存在domWindow的“functionCallOnClose”设置,但似乎并没有做任何事情。

这里是一个代码段。这是在点击按键事件绑定到具有“timeEntry”的类名称的所有div:

$(".timeEntry").live("click keypress", function() { 

    // bunch of code here to set up the DOMWindow... 

    $.openDOMWindow({ 

     // bunch of settings here... 

     functionCallOnClose: function() { 
      // this doesn't work 
      // 'DivId' is the object (DIV) that was clicked on 
      $(DivId).focus(); 
     } 
    }); 

}); 

有没有人有一个线索,为什么我似乎无法让焦点回到后原来的DIV点击或按键事件被解雇和处理?

我意识到这是一个非常模糊的问题,所以我把它扔在那里,希望其他人阅读,这是使用jQuery DOMWindow和处理点击按键事件(或至少知道如何)

:O)

编辑:做一些进一步的调试后,似乎有与jQuery正从DIV标签的tabIndex属性的问题。当我认为我的页面的源代码,我可以看到的属性:

<div id="someDiv" class="someClass" tabindex="1"> ... </div> 

然而,当我尝试使用jQuery获取属性,它不会出现在那里。

此代码返回“未定义”

var tabindex = $("#someDiv").attr("tabindex"); 

但是,如果我设置使用jQuery的属性,我可以转身和检索:

// set the tabindex 
$("#someDiv").attr("tabindex", "1"); 

// now this returns "1" 
var tabindex = $("#someDiv").attr("tabindex"); 

有没有人有一个线索,为什么jQuery的没有按在HTML中设置时返回tabindex属性,但它会在使用代码动态设置后返回?

希望这是有道理...

+0

调用.focus()调用是否在脚本的其他地方使用div?我注意到在.focus()文档中,它可能不适用于旧版浏览器中的非表单元素,即使使用tabindex。此外,你有没有尝试在你的functionCallOnClose中放置一个alert,以确保它实际上正在执行? – Ender 2010-10-26 22:20:45

+0

是的,焦点()在别处工作,是的,我知道该函数正在执行,因为我可以使用调试器进入它。奇怪的是,我似乎无法使用jQuery从div中获取tabindex属性。我可以在HTML源代码中看到它,所以我知道它在那里,但是当我尝试访问它时,jQuery返回“undefined”。我认为这是我的问题的根本原因。 – camainc 2010-10-27 18:14:26

回答

相关问题