-1

我有以下 HTML,我需要获取对象的第一个 div 父级(折叠)

如果这个父级有一个(ZeroClass)类..我想要下一个 div 父级..

<div>
  <div id = "DeadCode">
    <div class = "ZeroClass">
      <table class = "zeroTable">
         <...tableData...>
      </table>
    </div>
  </div>
</div>

jQuery函数:

function ResizeGrid(){
    var collapse = $(".zeroTable").parent();

    if ($(collapse).hasClass("ZeroClass")) {
        collapse = $(collapse).parents($("div"));
    }
}

一切都很好,但是当通过 if 语句时,它使 Collapse Null .. 有什么想法吗?

4

2 回答 2

1

刚刚处理了您提供的 HTML 和脚本,并发现了以下内容检查下面的演示

http://jsfiddle.net/ffRN7/37/

Demo1 将添加类到最近的 div

用于在下面的脚本中查找最近的 div 的修改行...

$(collapse).closest("div").addClass("divclass");

http://jsfiddle.net/ffRN7/38/

Demo2 将向没有任何 id 或 class 脚本的父 div 添加类,以防 fiddle 无法访问:

function ResizeGrid(){

        var collapse = $(".zeroTable").parent();

    if ($(collapse).hasClass("ZeroClass")){
            $(collapse).parents("div").addClass("divclass");

        }
    }

        $("a").bind("click", ResizeGrid);

CSS

.zeroTable td {border:1px solid black}
.ZeroClass {border:1px solid green; width:90%; height:50px; margin:5px;}

#DeadCode {border:1px solid blue; width:95%; height:100px; }

.divclass{height:200px; padding:5px; background-color:yellow;}
于 2012-04-05T11:51:16.327 回答
0

用于parent第一步和closest第二步:

function ResizeGrid() {
    var $collapse = $(".zeroTable").parent();

    if ($collapse.hasClass("ZeroClass")) {
        $collapse = $collapse.closest("div");
    }
}

您的问题出在这一行:

collapse = $(collapse).parents($("div"));

您首先获取所有 div 元素$("div"),然后告诉$(collapse).parents()匹配其中一个。

我的代码:

$collapse = $collapse.closest("div");

告诉 jQuery 找到最近的父 div。

为 jQuery 变量添加前缀是一个很好的做法,$以帮助跟踪哪些 var 是 jQuery 对象,哪些是常规 DOM 节点。

于 2012-04-05T11:37:48.323 回答