-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にClassを追加します

以下のスクリプトで最も近いdivを見つけるための変更された行...

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

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

Demo2は、フィドルにアクセスできない場合に備えて、IDまたはクラスScriptを持たない親divにクラスを追加します。

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最初のステップとclosest2 番目のステップに使用します。

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

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

あなたの問題はこの行にあります:

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

最初にすべての div 要素をフェッチしてから、それらの 1 つに一致するように$("div")指示します。$(collapse).parents()

私のコード:

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

最も近い親 div を見つけるように jQuery に指示します。

$どの変数が jQuery オブジェクトで、どの変数が通常の DOM ノードであるかを追跡できるように、jQuery 変数の前に を付けることをお勧めします。

于 2012-04-05T11:37:48.323 に答える