少なくともIE8では機能しないdiv:last-child
を使用する以外に、div要素の最後の子を取得する別の方法はありますか?
JQueryでは簡単です。
$("div :last-child")
純粋なCSSではそれを行うことはできません。
そうしないと、JavascriptでDOMをトラバースすることに固執します。
違いにも注意してください。
"div :last-child"
:divの最後の子すべて。そして"div:last-child"
:is最後の子であるすべてのdiv。残念ながら、(あなたが述べたように)IEで失敗する:last-childを使用せずにCSSでこれを行う方法を私は知りません。
Javascriptについて話している場合は、Node.lastChildを使用して可能です。
var div = document.getElementById("mydiv");
var lastChild = div.lastChild;
JQueryを使用して、適切な要素を見つけます。$("div:last-child").addClass("last-child");
次に、CSSを使用してプレゼンテーションを指定します。div .last-child { /* your rules */ }
プログラムでクラス「last」を割り当てて選択するか、javascriptを使用できます。また、Microsoftのいくつかを使用してショットを撮ることもできますIE cssスクリプトのものだけです。しかし、私はそれらについてあまり知りません。また、それをオプションとは見なしません。
これを純粋なJavaScriptで行うには、ターゲット要素のlastChildからノードをループバックします。 HTMLに空白がある場合、lastChildはテキストノードである可能性があるため、要素ノードが見つかるまで(ノードタイプ1)、またはノードがなくなるまで(previousSiblingはnullを返します)ループします。
たとえば、ページの最後の要素を見つけるために、本文のlastChildからループバックします。
var targetElement = document.getElementsByTagName("body")[0],
lastChildElement = targetElement.lastChild;
while (lastChildElement && lastChildElement.nodeType !== 1) {
lastChildElement = lastChildElement.previousSibling;
}
if (lastChildElement) {
// Do something
}
本体内に要素がない場合、lastChildElementはこのループをnullとして終了します。
箱から出して$( "div:last-child")を絶対に使用したくない場合があります。注意すべき重要な点の1つは、これはその呼び出し後のDOMへの変更に対応しないということです-例:最後の子として新しい要素が追加された場合は、更新する必要があります。以前の呼び出しを繰り返す場合だけではありません。前の最後の子に対する最初の呼び出しを元に戻す必要があります。
漠然と動的なことをしている場合は、これに注意してください。 CSS疑似クラスは間違いなく優れたソリューションであり、IEでのサポートがひどく不足しているだけです。あなたのデザインがIEでの最後の子のサポートの喪失に対処でき、プログレッシブエンリッチメントを使用している場合は、JSよりもCSSアプローチを強くお勧めします。
早送り>> 4年後(2013)
CSS v3(CSS3)で可能になり、すべての主要なブラウザーでサポートされています(IEは> =バージョン9)。
IE <=バージョン8で時間を遡る場合、jQueryバージョン<1 .xはあなたを分類します(他の答えが指摘しているように)。
続きを読む http://www.w3schools.com/cssref/sel_last-child.asp