18

私が持っているとしましょう<ul>

<ul>
    <li></li>
    <li></li>
    <li class="test"></li>
</ul>

.testjqueryで次の要素があると判断するにはどうすればよいですか?このような?:

if ($("li.test").next()) { …… }

奇妙なことは、私でさえ上記のように書いているということです:

if ($("li.test").next()) {alert("true");}

それでも「true」と警告しますが、ご覧のとおり、その横に要素はありません。なぜこれが発生したのでしょうか。

または私にできることは

        for (i = 0; i < $("li").length; i++) {
            if ($("li").eq(i).hasClass("test")) {
                if (i == $("li").length - 1) {
                    alert("true");
                }
            }
        }

現在、これで問題は解決する可能性がありますが、簡単な方法はありますか?

ありがとうございました

4

4 に答える 4

41

jQueryの選択はtrue、(ifステートメントのように)常にブール値に評価されます。これは、ネイティブのJavascriptタイプではなく、オブジェクトであるためです。

length選択範囲のプロパティを確認する必要があります。空の場合、これはと評価され、0と評価されるfalseため、ifは合格しません。空でない場合は正の整数になるため、と評価されるtrueため、条件は合格になります。

if ($("li.test").next().length) { …… }
于 2011-04-16T09:53:11.280 に答える
7
if ($("li.test").next().length > 0) { ... }

http://jsfiddle.net/Kfsku/

于 2011-04-16T09:51:43.323 に答える
2

$("li.test").next().length;

于 2011-04-16T09:53:28.653 に答える
1

長さのプロパティを確認する必要があります。

if ($("li.test").next().length) {
  //has next 
} else {
  //last elem
}

jQueryは通常それ自体を返すので、チェーンできることに注意してください。そのオブジェクトのlengthプロパティを取得すると、情報が得られます

于 2011-04-16T09:53:02.813 に答える