【发布时间】:2009-09-29 02:59:43
【问题描述】:
我有以下 jQuery 函数:
function GetGrandparentDiv(item) {
return item.parents('div:eq(1)');
}
由以下函数调用:
$(".addset").click(function(e){
e.preventDefault();
var addstr = "<span class='setrow'>random html</span>";
var gp = GetGrandparentDiv($(this));
alert(gp.attr('id'));
gp.find("div.esets").append(addstr);
});
如您所见,我在其中设置了一个警报。该代码在 FireFox 中运行良好,并显示了祖父 div 的正确 ID。但是,在 IE 和 Chrome 中,它不起作用。 IE/Chrome的alert box中的ID也是null或者""。
我是否在做一些 IE/Chrome 不支持的事情?
编辑:
Html 看起来有点像(我面前没有它)
<div id="grandparent">
<div id="parent">
<input type="button" class="addset" value="Add Set" />
<!-- other stuff -->
</div>
<!-- other stuff -->
</div>
编辑: 这是实际的 HTML,因为我现在有它:
<div id="random2" class="ebox">
<div class="ebheader">
<!-- text -->
<span class="right">
<input type="button" class="addset" value="Add Set"/>
</span>
</div>
<!-- other stuff -->
</div>
由于某些奇怪的原因,使用 GetGrandparentDiv() 函数在 FF 以外的任何地方都不起作用。具有讽刺意味的是,我在应用程序的其他区域中使用了该功能并且它可以正常工作。
我最终为解决方案做了以下工作:
var gp = $(this).closest(".ebox");
因为每个动态添加的“容器”如果你将有一个类型为 .ebox 的类(因为我不知道 div 的 id,但我知道类)。感谢您的帮助和建议!
【问题讨论】:
-
您的代码是否带有 $(document).ready(... 块?
-
Yuppers。它在 $(document).ready() 块内。
标签: jquery firefox internet-explorer google-chrome