gpt4 book ai didi

javascript - 在(jquery)ajax 请求中获取当前脚本 DOM 对象

转载 作者:数据小太阳 更新时间:2023-10-29 04:32:55 25 4
gpt4 key购买 nike

我有一个包含一些 javascript 的 html 组件。

组件是模板引擎中的一个文件,所以可以使用

  • 在整个html页面的初始渲染中
  • 作为通过 ajax 请求呈现的独立 html

javascript 应该应用于模板中的对象,即:

<div class="grid" >
<div class="item" id="item_13">
This is item 13
</div>
<div class="item" id="item_14">
This is item 14
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$(HOW_DO_I_GET_PREVIOUS_ELEMENT???).someEffect(params)
})
</script>

我检查过 this similar question但最好的答案似乎依赖于当前脚本是“脚本”变量中的最后一个脚本,因为下一个脚本尚未加载。如果我将 html 和 js 附加到 ajax 请求中,情况就不会这样了。

要 100% 清楚:问题是关于在不引用任何特定属性的情况下获取前一个对象:标签没有唯一 ID,没有随机 ID,因为理论上它总是有机会出现两次,没有唯一类属性,因为完全相同的组件可以显示在 HTML 文档的另一部分。

最佳答案

涉及两步过程的简单解决方案:

1) 找出你的脚本标签是哪个元素

2) 找到该元素的前一个兄弟

在代码中:

<div id="grid">
<!-- ... -->
</div>
<script type="text/javascript">
var scripts = document.getElementsByTagName("script");
var current = scripts[scripts.length-1];
var previousElement = current.previousSibling;
// there may be whitespace text nodes that should be ignored
while(previousElement!==null && previousElement.nodeType===3) {
previousElement = previousElement.previousSibling; }
if(previousElement!==null) {
// previousElement is <div id="grid"> in this case
$(document).ready(function(){
$(previousElement).someEffect(params);
});
}
</script>

这是好的网络编程吗?不。您应该根据生成的内容知道哪些元素应该应用效果。如果你有一个带有 id 的 div,这个 id 是唯一的,你的生成器可以告诉你如果它生成那个 div,它也必须生成为其设置 jQuery 效果的 js。

但是让我们忽略它;它有效吗?就像一个魅力。

关于javascript - 在(jquery)ajax 请求中获取当前脚本 DOM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com