因此,我一直在努力研究这一整天,并且无法弄清楚如何使其发挥作用。我有一张TD的表格,里面充满了使用JQuery“getJSON”命令从数据库中绘制的内容。我有一个事件处理程序的设置,因此当你双击一个TD元素时,它的内容就成为一个INPUT元素,其默认值是封闭TD的前一个内容。JQuery:查找创建DOM元素的对象
input元素被命名为“输入”像这样一个Javascript对象内部创建:
var Input = function() {
var obj = this;
obj.docElement = $('<input/>').attr('type', 'text').val(obj.defaultValue);
}
所有这一切都被工作至今。我的问题是,我希望用户能够在INPUT被选中表示他们已经完成编辑该字段时按下RETURN键。我试过类似以下的东西:
$(obj.docElement).bind('keydown', function(e) {
if(e.which == 13) {
// do something
}
}
这适用于您第一次编辑字段;但是,如果您多次编辑一个字段,它将停止工作。此外,如果您随机双击TD,最终会中断。我测试了它,并确定INPUT元素停止注册任何类型的事件,就好像“绑定”不再存在一样。
我做了大量的搜索,并确定放置在INPUT元素上的常规JQuery“绑定”处理程序不可靠。因此,我决定将事件处理程序附加到文档对象,而不是使用如下:
$(document).bind('keydown', function(e) {
// do something
}
我知道我可以使用“e.target”得到了动作上执行的目标元素(这适用于我,e.target正确地指向INPUT元素)。
我的问题是,如何获得创建INPUT元素的对象?我需要能够执行包含在用于创建INPUT元素的相应“输入”类别 中的函数。我需要从“$(document).bind”函数中调用这些函数。所以基本上我需要能够得到一个INPUT元素的父/创建者Input对象。
如果我没有足够清楚地解释任何事情,请让我知道。任何帮助在这个问题将不胜感激!我也愿意提供其他方法的建议(除了使用“$(document).bind”)。
谢谢!
非常感谢!读完你的答案后,我决定使用嵌套的for-in循环遍历我的对象层次结构,并检查每个Input对象的文档元素是否与传入的e.target元素对照。也许不是最有效的方式,但现在一切正常!再次感谢! – 2009-02-22 06:04:01