代码之家  ›  专栏  ›  技术社区  ›  MunkiPhD

使用jquery选择grandorrent div在IE/chrome中不起作用

  •  0
  • MunkiPhD  · 技术社区  · 15 年前

    我有以下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中非常有用,并且显示了Grand Parent Div的正确ID。但是,在IE和Chrome中,它不起作用。IE/Chrome中警报框中的ID也为空或“”。

    我是否在做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>
    

    由于某些奇怪的原因,使用getgrandorrentDiv()函数在FF之外的任何地方都不起作用。具有讽刺意味的是,我在应用程序的其他领域中使用了该函数,并且它工作正常。

    我最终为解决方案做了以下工作:

    var gp = $(this).closest(".ebox");
    

    因为每个动态添加的“container”都有一个.ebox类型的类(因为我不知道DIV的ID,但我知道该类)。感谢您的帮助和建议!

    3 回复  |  直到 15 年前
        1
  •  0
  •   Barnabas Kendall    15 年前

    不确定兼容性的问题,但可以使用执行相同操作的备用代码。要获取父元素列表中的第一个div,为什么不尝试item.closest(“div”)或至少item.parents(“div”).eq(1),而不是item.parents(“div:eq(1))。我爱 closest 不过,这是一个很好的工具。

    我要尝试的另一件事是颠倒addstr变量的引号,如:

     addstr = '<span class="setrow">random html</span>';
    
        2
  •  1
  •   ken    15 年前

    在提供了示例代码的情况下,这在IE 8.0.6001和Chrome4.0.213中是可以正常工作的——我得到一个带有文本“祖父母”的警告。

    也许你有一些格式错误的HTML?

    另外,这个语法 应该 做同样的工作(至少在我对这个问题的测试中是这样),但是你可以试一试,看看:

    function GetGrandparentDiv(item) {
        return item.parents('div').eq(1);
    }
    
        3
  •  1
  •   ScottE    15 年前

    尝试(从类更改为ID-抱歉):

    $(".addset").closest("#grandparent");
    

    去外公部门。

    或者,$(“.addset”).parent().parent();如果您不知道DIV的ID。