首页 > 解决方案 > 如何使用 Javascript 动态生成的 Jquery 修改对象?

问题描述

我想将文本附加到由浏览器中的 Algolia 搜索创建的对象。这是由 Algolia 创建的块:

<div id="editing-view-port">
    <div></div>
</div>

我想在内部 div 中插入一个字符串。这是我尝试过的:

$(document).find('#editing-view-port > div').append(e.results[0][0].transcript);

其中 e.results[0][0].transcript 是我的字符串。我可以将此附加到不是由 Algolia 搜索创建的对象。我怀疑这与委托或事件绑定有关,但我不确定如何做到这一点?

更新澄清:

这就是我测试 Algolia 创建的对象与我创建的对象的方式...

我的 JS:

$(document).find('#editing-view-port > div').append(e.results[0][0].transcript); // this is an Algolia object
$(document).find('#my-object > div').append(e.results[0][0].transcript); // this is an object created by me

字符串是“测试”

生成的 HTML:

<div id="editing-view-port">
    <div></div>
</div>

<div id="my-object">
    <div>test</div>
</div>

值得注意的是,当我在 Chrome 中检查动态生成的部分时,它会包装该部分:

#shadow-root (user-agent) == $0

标签: jqueryalgolia

解决方案


您的问题似乎是在执行插入脚本时该元素不存在。当您使用浏览器检查器检查 HTML 时,该元素就在那里。因此,该元素是在两者之间的某个时候创建​​的。你需要知道它什么时候被插入,然后插入你的文本。如果你不能准确地理解这一点,你应该尝试检测它。请参阅以下内容中的详细信息和可能的解决方案:如何在 jquery 中检测何时将新元素添加到文档中?

编辑:请在评论中说明如果您投反对票应该接受什么。谢谢。


推荐阅读