<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)
如果代码是因为你已经证明它,所以它的运行马上,因为DOM正在修建,你可能能够做一些事情document.body.lastChild.
所以对你的简短回答是:
var div = $(document.body.lastChild).closest('div');
Run Code Online (Sandbox Code Playgroud)
我是一个有点偏执那里,在我的测试(在Chrome),document.body.lastChild 是的div,但通过closest我对付它可能是可能script在某些发动机.
<!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)
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/
如果你的脚本标签没有被推迟(所有同步加载),那么这将工作:
<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)
| 归档时间: |
|
| 查看次数: |
10239 次 |
| 最近记录: |