プロが教えるわが家の防犯対策術!

画面読込時の処理上、「最後から2番目以降を先頭に追加」という処理をしたく、jQueryの”.eq()”で上手く表現できないでしょうか。
”最後からn番目”を指定する場合は、.eq(-n)とあり、末端は-1となっていたので、.eq(-2,-1)としましたが、上手くいきませんでした。
こんな記述をしました。

var $li = $('li','ul#id名');
$('ul#id名').prepend($li.eq(-2,-1));

これでは上手く行かなかったので、仕方なく

$('ul#id名').prepend($li.eq(-2));
$('ul#id名').prepend($li.eq(-1));

としましたが、なんかカッコ悪いですよね。。。一発で追加でるようなやり方ないですかね。

A 回答 (2件)

A No1です。



>要素が先頭へ移動することは見受けられませんでした。。。
一応、fx27とie8で確認したのですが…

念のため、テストしたHTML全文を載せておきます。
こちらの環境では下の二つ(5番、6番)が先頭に行きます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9. …
<script type="text/javascript">
$(function(){
$("#hoge p:gt(-3)").prependTo("#hoge");
});
</script>
</head>
<body>

<div id="hoge">
<p>1番目
<p>2番目
<p>3番目
<p>4番目
<p>5番目
<p>6番目
</div>

</body>
</html>

この回答への補足

fujillin 様

どうやらjQueryのバージョンが低い(ver1.7を使用しておりました)ためのようでした。

補足日時:2014/03/31 11:07
    • good
    • 0
この回答へのお礼

ソースまで書いて頂きありがとうございます。確認してみます。

お礼日時:2014/03/28 19:18

自分自身の順序を変更するので、jQueryの内部の処理によってはどうなるのか不明なところがありますが・・・



手持ちのブラウザで試してみたところ、
$("#hoge p:gt(-3)").prependTo("#hoge");

<div id="hoge">
<p>1番目
<p>2番目
<p>3番目
<p>4番目
<p>5番目
<p>6番目
</div>
でそれらしい結果になりますが、ちゃんと調べたわけではありませんので、ご自身で確認なさってください。
    • good
    • 0
この回答へのお礼

fujillin 様

回答ありがとうございます。
お教え頂きました手法でトライしましたが、要素が先頭へ移動することは見受けられませんでした。。。

お礼日時:2014/03/27 13:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!