使用jQuery选择祖父母div不会';我不能在IE/Chrome中工作

使用jQuery选择祖父母div不会';我不能在IE/Chrome中工作,jquery,firefox,internet-explorer,google-chrome,Jquery,Firefox,Internet Explorer,Google Chrome,我有以下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 = GetGra

我有以下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);

    });
由以下函数调用:

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);

    });

因为每个动态添加的“container”都有一个.ebox类型的类(因为我不知道div的id,但我知道这个类)。谢谢你的帮助和建议

不确定兼容性方面的问题,但可能做相同事情的替代代码可能会起作用。与其使用item.parents('div:eq(1)')来获取父元素列表中的第一个div,不如尝试item.closest('div')或至少使用item.parents('div').eq(1)。不过我喜欢,这是一个很棒的工具

我要尝试的另一件事是反转addstr变量的引号,如中所示:

 addstr = '<span class="setrow">random html</span>';
addstr='random html';
尝试(从类更改为id-抱歉):

联系祖父母部


或,$(“.addset”).parent().parent();如果您不知道div的id。

以及提供的示例代码,这在IE 8.0.6001和Chrome 4.0.213中可以正常工作——我收到一个带有文本“祖父母”的警报

也许你有一些格式不正确的HTML

此外,该语法的工作原理应该是相同的(至少在我对该问题的测试中是这样),但您可以尝试一下,看看:

function GetGrandparentDiv(item) {
    return item.parents('div').eq(1);
}

您的代码是否包含$(document).ready(…block?Yuppers。它位于$(document).ready()块中。您的建议我没有成功:/I我尝试了最接近的,但在进一步弄乱它后无法让它检索祖父母div,最接近的结果是我使用的解决方案。我用解决方案编辑了问题。1)没有叫“祖父母”的课。2) ID为“祖父母”的DIV只是一个例子——我相信在运行时他不会知道DIV的ID,因此也不会知道问题的原因。当然,一个选项是修改HTML并添加一个“祖父母”类,但这不是当前的问题。这不起作用,因为执行$(“,addset”)将选择所有具有addset类的项目。
$(".addset").closest("#grandparent");
function GetGrandparentDiv(item) {
    return item.parents('div').eq(1);
}