我有一系列 DIV 元素,单击它们时会触发 DOMWindow 打开事件。那里没问题。
然后我不得不添加键盘辅助功能。啊!!
我为 DIV 添加了 tabindex 属性,它允许用户从一个 DIV 切换到下一个 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 属性,但是在使用代码动态设置它之后它会返回?
希望这是有道理的...