2

numクラスでオブジェクトを削除しようとしています。

html:

<a class='num'>1</a>
<a class='num'>2</a>
<a class='num'>3</a>
<a class='num numa'>4</a>
<a class='num'>5</a>
<a class='num'>6</a>
<a class='num'>7</a>
<a class='num'>8</a>
<a class='num'>9</a>
<a class='num'>10</a>

しかし、私はまた、オブジェクトを周りに保ちたいと思っていますnuma

plusの前に 3 つのオブジェクトを保持し、numaplusの後に 3 つのオブジェクトを保持したいnuma

これは私の試みです:

<script>
    var ind = $('.num:contains("4")').index();
    for(i=0; i<$('.num').size(); i++)
    {
        if(i<ind-3 || i>ind+3) $('.page_num:eq('+ind+')').remove();
    }
</script>

何か案が?

4

4 に答える 4

3

sliceメソッドを使用して、メソッドを使用して要素を除外できますnot。メソッドが使用されているためindex、要素がページ内で兄弟でない場合、これも要素を選択して削除します。

var $e = $('a.num'),
    $t = $e.filter('.numa'),
    i  = $e.index($t), 
    $k = $e.slice(i-3, i+4);

$e.not($k).remove();

http://jsfiddle.net/WnDS2/

編集:フィドルが示すように、メソッドに渡される最初のパラメーターがslice負の数の場合、sliceメソッドは要素をフィルター処理しません。選択した要素の長さを確認し、減算の結果が負の数のセットであるかどうかを確認できます。それを 0 にします。

http://jsfiddle.net/WnDS2/5/

于 2013-04-21T07:41:05.880 に答える
1

最初に属性セレクターを使用して特定のアンカー タグのインデックスを取得し、次に.each関数を使用してすべての a 要素を反復処理し、次のロジックを使用して必要なものを削除します。これを試してください。

 var xIndex=$("a[class='num numa']").index()

      $("a").each(function(i)
                  {
             if(xIndex - 3 > i || xIndex + 3 < i)
                {
                  $(this).remove();
                }
                  })

デモ

于 2013-04-21T08:17:20.513 に答える
0

:nth-childセレクターを使用できます。

var ind = $('.numa').index();
$('.num:nth-child(-n+'+(ind-3 >= 0 ? ind-3 : 0)+'), .num:nth-child(n+'+(ind+5)+')').remove();

http://jsfiddle.net/AgbAU/1/

その部分は、どちらが間違った構文であるかのind-3 >= 0 ? ind-3 : 0ような状況を防ぎます。nth-child(-n+-1)

filter メソッドも便利です。

var ind = $('.numa').index();
$('.num').filter(function() {
    var i = $(this).index();
    return i < ind - 3 || i > ind + 3;
}).remove();

http://jsfiddle.net/AgbAU/2/

于 2013-04-21T08:07:14.850 に答える
0
Try This: 
var index = $(".numa").index();
$(".numa").siblings().slice(index,index + 3).remove();
$(".numa").siblings().slice(index - 3, index).remove();
于 2013-04-21T07:55:10.060 に答える