破棄されたブログ

このブログは破棄されました。

jQuery で取得したオブジェクトが親ノードの last-child であるか判定する

備忘録的に。もともと関数じゃなかったのを関数として切り出してきたんで、型チェックとかはしてない。

jQuery を使っていなければもっと素直に書ける気がする。

function isLastChild(obj) {
    obj = $(obj);
    if (obj.parent().children(":last").get(0) === obj.get(0)) { // 0 を忘れるとだめ
        return true;
    }
    return false;
}

で、このコードがどうしたかって言うと、DOM オブジェクトを get() で取得するときにインデックスを指定しないと、きちんと比較できないよっていうお話。

当たり前のことなのかもしれないけど、jQuery オブジェクトで普通に get() をすると DOM オブジェクトの配列が返って来ることがある。DOM オブジェクトそのものではないから、比較すると別のオブジェクトであると判定されてしまう。従ってきちんとインデックス 0 の指定をしてやる必要がある。

これで 1 時間くらい詰まってた気がする。

参考

How would you compare jQuery objects? - Stack Overflow

広告を非表示にする