0

2 つの値の間の属性の値に基づいて要素を表示/非表示にするように jQuery を取得しようとしています。

次のようなマークアップがあります。

<a class="page_link" href="javascript:go_to_page(0)" longdesc="0">1</a>
<a class="page_link" href="javascript:go_to_page(1)" longdesc="1">2</a>
<a class="page_link" href="javascript:go_to_page(2)" longdesc="2">3</a>
<a class="page_link" href="javascript:go_to_page(3)" longdesc="3">4</a>
<a class="page_link active_page" href="javascript:go_to_page(4)" longdesc="4">5</a>
<a class="page_link" href="javascript:go_to_page(5)" longdesc="5">6</a>
<a class="page_link" href="javascript:go_to_page(6)" longdesc="6">7</a>
<a class="page_link" href="javascript:go_to_page(7)" longdesc="7">8</a>
<a class="page_link" href="javascript:go_to_page(8)" longdesc="8">9</a>

次のようなjQueryがあります。

//Now, we need to paginate the pagination
var page_link_count = $('.page_link').length(); 

//Hide all the .page_links
$('.page_link').css('display','none'); 

//Show active_page
$('.active_page').css('display','block'); 

//Show up to four .page_link on either side of active_page
var active_page_value = $('.active_page').attr('longdesc'); 

$('.page_link').each(function(){

    var longdesc = $(this).attr('longdesc');

    // This next part might be what's getting me...
    if( longdesc <= active_page_value+4 && longdesc >= active_page_value-4){

        $(this).css('display','block');

    }

});

私が言おうとしているのは、page_link クラスを持つ要素の longdesc 属性値が、active_page の longdesc の合計 - 4 の値よりも大きいか、active_page の longdesc + 4 の合計よりも小さい場合です。

4

3 に答える 3

2

それらを追加する前に、番号を解析する必要があります。代わりに値が追加されます

if( (longdesc <= parseInt(active_page_value ,10) +4)
     &&( longdesc >= parseInt(active_page_value,10) -4))

JS

//Now, we need to paginate the pagination
var page_link_count = $('.page_link').length; 

//Hide all the .page_links
$('.page_link').css('display','none'); 

//Show active_page
$('.active_page').css('display','block'); 

//Show up to four .page_link on either side of active_page
var active_page_value = $('.active_page').attr('longdesc'); 

var min = parseInt(active_page_value,10) - 4;
var max = parseInt(active_page_value,10) + 4;

$('.page_link').each(function(){
    var longdesc = $(this).attr('longdesc');

    if( longdesc <= max && longdesc >= min){
        $(this).css('display','block');
    }

});​
于 2012-12-14T22:11:00.457 に答える
0

変更する2つのこと:

変化する

var page_link_count = $('.page_link').length();

var page_link_count = $('.page_link').length; 

var active_page_value = $('.active_page').attr('longdesc');

var active_page_value = +$('.active_page').attr('longdesc');
于 2012-12-14T22:10:52.860 に答える
0

複雑すぎる...これだけあれば十分です。

//Hide all the .page_links
$('.page_link').hide(); 

//Show active_page
$('.active_page').show(); 

//Show all links before active
$('a.active_page').show();
$('a.active_page').prevAll().show();

*注: 最後の 2 つは組み合わせることができますが、混乱させたくありません。

于 2012-12-14T22:17:37.870 に答える