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

前端之家收集整理的这篇文章主要介绍了javascript – 在(jquery)ajax请求中获取当前脚本DOM对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含一些 javascript的html组件.

该组件是模板引擎中的文件,因此可以使用它

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

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

  1. <div class="grid" >
  2. <div class="item" id="item_13">
  3. This is item 13
  4. </div>
  5. <div class="item" id="item_14">
  6. This is item 14
  7. </div>
  8. </div>
  9. <script type="text/javascript">
  10. $(document).ready(function(){
  11. $(HOW_DO_I_GET_PREVIoUS_ELEMENT???).someEffect(params)
  12. })
  13. </script>

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

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

解决方法

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

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

2)找到该元素的先前兄弟

代码中:

  1. <div id="grid">
  2. <!-- ... -->
  3. </div>
  4. <script type="text/javascript">
  5. var scripts = document.getElementsByTagName("script");
  6. var current = scripts[scripts.length-1];
  7. var prevIoUsElement = current.prevIoUsSibling;
  8. // there may be whitespace text nodes that should be ignored
  9. while(prevIoUsElement!==null && prevIoUsElement.nodeType===3) {
  10. prevIoUsElement = prevIoUsElement.prevIoUsSibling; }
  11. if(prevIoUsElement!==null) {
  12. // prevIoUsElement is <div id="grid"> in this case
  13. $(document).ready(function(){
  14. $(prevIoUsElement).someEffect(params);
  15. });
  16. }
  17. </script>

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

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

猜你在找的Ajax相关文章