繁体   English   中英

jQuery:查找创建DOM元素的对象

[英]JQuery: Finding the Object that created a DOM Element

因此,我整天都在努力,无法弄清楚如何使其正常工作。 我有一个表格,其中TD填充了内容,这些内容是使用JQuery“ getJSON”命令从数据库中绘制的。 我有一个事件处理程序设置,以便当您双击TD元素时,其内容将变为INPUT元素,并带有包含TD先前内容的默认值。

INPUT元素是在名为“ 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元素停止注册任何类型的事件,好像“绑定”不再存在于其上。

我已经进行了大量的Google搜索,并确定放置在INPUT元素上的常规JQuery“绑定”处理程序不可靠。 因此,我决定使用以下方法将事件处理程序附加到文档对象:

$(document).bind('keydown', function(e) {
    // do something
}

我知道我可以使用“ e.target”获取执行操作的目标元素(这对我有用,e.target正确引用了INPUT元素)。

我的问题是,如何首先获得创建INPUT元素的对象? 我需要能够执行包含在用于创建INPUT元素的相应“ Input”类中的功能。 我需要从“ $(document).bind”函数中调用这些函数。 因此,基本上我需要能够获得INPUT元素的父/创建者Input对象。

如果我还没有足够清楚地解释任何事情,请告诉我。 在这件事上的任何帮助将不胜感激! 我也乐于接受其他方法的建议(除了使用“ $(document).bind”之外)。

谢谢!

我想我了解问题了...

您可以遍历DOM来找到父文档元素,但这不是您的意思,对吧? 您希望父脚本元素具有对元素进行操作的一堆逻辑。

我怀疑创建输入元素时提供对父级的某种引用可能是最容易的……将其传递给事件处理程序,或将其设置在全局可访问的位置(例如current_element_parent var)。

我同意托比海德。 您可以向INPUT元素添加自定义属性,以引用父对象,也可以在内存中保留一个映射,该映射将动态创建的INPUT元素映射到创建它的父元素。 当您捕获Return键时,只需从地图上删除该关系即可,如果用户再次单击它,则可以再次添加该关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM