获取第二个javascript的父级div id?

3

我有一个像这样的div:

<div id="mainDiv">
<script>
javascript here...
</script>
</div>

我想获得其所属div的ID。

我尝试使用jQuery和传统的javascript来实现这一点,但它总是返回undefined。

有人有什么想法吗?谢谢


请发布您尝试过但未能正常工作的JS代码。 - j08691
你尝试给脚本标签 <script id="foo"> 添加一个id,然后使用 $('#foo').parent() 吗? - pixeline
你能发布更多信息吗?JavaScript 包含了什么? - JerryHuang.me
jQuery选择器:$('#mainDiv'); 为什么不外包你的JS?请在jsfiddle.net上发布更多代码。 - Mr. B.
$('#script').parent(); 在设置了脚本标签的ID后确实有效,但不幸的是我不能使用它,因为该脚本标签每次都是通过Ajax调用添加的,所以每次都会有相同的标签! - realtek
6个回答

3
自从浏览器从上往下读取代码以来,您可以这样做:
纯JS
var scriptTags = document.getElementsByTagName('script');
var id = scriptTags[scriptTags.length - 1].parentNode.id;

jQuery

var id = $('script').last().parent().prop('id');

当浏览器读取此代码时,最后一个脚本标记是浏览器正在读取的标记。
这里有一个示例:http://jsfiddle.net/nb234/

这太棒了。干得好 :) - Ollie Bennett
+1 好的答案,不需要他做任何改变。 - Reinstate Monica Cellio

2

请查看http://jsfiddle.net/78N9A/1/以了解更多关于IT技术的内容。

<div id="parent">
   <script id="scr">
       function show()
       {
         alert('hello');
       }
    </script>
</div>

window.onload = function(){
    var ele = document.getElementById('scr').parentNode;
    alert(ele.id);

}

0
<script id="script">

那么

$('#script').parent();

这在设置脚本标签中的ID后确实有效,但不幸的是我不能使用它,因为该脚本标签每次都是通过Ajax调用添加的,所以每次都会有相同的ID! - realtek

0
jQuery(document).ready(function($) {    

    $('div').attr('id');

});

这应该会为您提供所需的值。


什么是 div,为什么有太多的括号? - Reinstate Monica Cellio
那是一个非常好的问题 ;) - Timotheus0106

0
JavaScript: 给你的脚本一个ID,然后使用parentNode向上移动DOM。
var the_div_you_want = document.getElementById("skript").parentNode.id;

JQUERY: 很确定 .parent() 是你需要的。
$('#scriptId').parent().attr("id");

无论如何,你需要找到一些方法来定位脚本,然后上溯DOM以找到相应的关系。希望这可以帮助到你。

http://jsfiddle.net/Zbuf8/1/


0

如果我理解正确,你是说在预先不知道父 div 的 id 的情况下,你想使用 JS 来确定它是什么。

如果你无法编辑脚本标签以添加一个 id,也许你可以在该块内部使用 document.write() 添加一个小的隐藏元素,然后你可以测试一下这个元素的父级是什么。

http://jsfiddle.net/AtRYF/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接