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

前端之家收集整理的这篇文章主要介绍了javascript – 在(jquery)ajax请求中获取当前脚本DOM对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含一些 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,但最好的答案似乎依赖于当前脚本是’scripts’变量中的最后一个,因为下一个尚未加载.如果我用ajax请求附加html和js,情况就不是这样了.

要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.

但是,让我们忽略它;它有用吗?喜欢魅力.

猜你在找的Ajax相关文章