如何选择<script>元素的父元素

thk*_*ang 19 jquery

<div id="scriptparent">
    <script type="text/javascript">
         $( /* select above <div> from <script> ... without id and div property */ )
    </script>
</div>
Run Code Online (Sandbox Code Playgroud)

从代码我有<script>块内部<div>块.我想<div><script>没有id,类,名称选择器的选择.我怎样才能做到这一点?

小智 10

 <div id="scriptparent">
        <script type="text/javascript">
            var scriptTag = document.scripts[document.scripts.length - 1];
            var parentTag = scriptTag.parentNode;
            alert(parentTag.id);
        </script>
    </div>
Run Code Online (Sandbox Code Playgroud)


T.J*_*der 7

如果代码是因为你已经证明它,所以它的运行马上,因为DOM正在修建,你可能能够做一些事情document.body.lastChild.

所以对你的简短回答是:

var div = $(document.body.lastChild).closest('div');
Run Code Online (Sandbox Code Playgroud)

我是一个有点偏执那里,在我的测试(在Chrome),document.body.lastChild div,但通过closest我对付它可能是可能script在某些发动机.

答案很长就是一个例子:Live Copy | 资源

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Last Element ID</title>
  <script>
    function setUpParentDiv() {
      var div = $(document.body.lastChild).closest('div');
      switch (div.attr("id")) {
        case "div1":
          div.css("color", "blue");
          break;
        case "div2":
          div.css("color", "green");
          break;
      }
    }
  </script>
</head>
<body>
  <div id="div1">
    I'm div1
    <script>
      setUpParentDiv();
    </script>
  </div>
  <div id="div2">
    I'm div2
    <script>
      setUpParentDiv();
    </script>
  </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)


Kev*_*sox 7

script标记支持所有HTML全局属性,包括id.添加id到脚本标记,该标记可用作选择父项的挂钩.

<div id="scriptparent">
<script id="myScript" type="text/javascript">
   alert($("#myScript").parent().attr("id"));
</script>
Run Code Online (Sandbox Code Playgroud)

工作示例:http://jsfiddle.net/5fTyK/

  • 那么上面的代码有多个实例怎么样?`$("#myScript")`不会选择最接近的那个 (2认同)

dfs*_*fsq 6

如果你的脚本标签没有被推迟(所有同步加载),那么这将工作:

<div id="scriptparent">
    <script type="text/javascript">
        var thisScript = document.scripts[document.scripts.length - 1],
            parent = thisScript.parentNode; // points to div#scriptparent
    </script>
</div>
Run Code Online (Sandbox Code Playgroud)