<div id="scriptparent">
<script type="text/javascript">
$( /* select above <div> from <script> ... without id and div property */ )
</script>
</div>
从代码我在<script>
块中有一个<div>
块。我想从<div>
中选择<script>
而没有ID,类,名称选择器。我怎样才能做到这一点?
答案 0 :(得分: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>
答案 1 :(得分:7)
如果代码正如您所示,并且正在运行立即,则在构建DOM时,您可以使用document.body.lastChild
执行某些操作。
所以对你的简短回答是:
var div = $(document.body.lastChild).closest('div');
我在那里有点偏执,在我的测试中(在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>
答案 2 :(得分:7)
script标签支持所有HTML全局属性,包括id
。在脚本标记中添加id
,用作钩子以选择父标记。
<div id="scriptparent">
<script id="myScript" type="text/javascript">
alert($("#myScript").parent().attr("id"));
</script>
答案 3 :(得分: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>
答案 4 :(得分:0)
上述解决方案都没有对我有用,我的脚本作为CMS的一部分以角度插入并且可重复阻止。
“some_div”类名称对于这种插入应该是唯一的。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="some_div" style="display: none;"></div>
<script type="text/javascript">
setTimeout(function(){
var local_id = 'Div_' + Math.round(Math.random() * 100000);
$('.some_div').not( ".processed" ).attr({id: local_id})
var alert_div = $('#' + local_id);
alert_div.show().html('nearby div')
alert_div.addClass('processed');
}, 20)
</script>