3

jquery を使用して HTML テーブルのページ付けを行っています。

aPagethePageの2 つの CSS クラス、ページ付け文字列を作成する JavaScript 関数、およびページがクリックされたときにページ付け文字列が計算されるように、各「ページ」をクリックイベントにバインドする jquery コードがあります。

私の問題は、ページがクリックされるたびに発生するようにしたいのですが、クリック イベントが 1 回しか発生しないことです。

どんな助けでも大歓迎です。ありがとう!!

私のjavascript/jqueryコードは次のとおりです。

var thisPage=1; npages=10;
 //initial pagination
  $("#pag").html(showPag(thisPage,npages));

 //  bind pagination string to click event
     $(".aPage").click(function(event){
           var thisPage=$(this).text()
     $("#pag").html(showPag(thisPage,npages));
     });
 // function that returns pagination string
     function showPag(thisPage,npages) {
     p="";
     for(i=1;i<=10;i++){
     if(i==thisPage) {
     p+="<span class='thePage'>"+i+"</span>"
      }
     else {p+="<span class='aPage'>"+i+"</span>" }
     }
     return p;
   }
4

5 に答える 5

9

live を使用してクリック イベントをバインドする

 $(".aPage").live('click',function(event){
           var thisPage=$(this).text()
     $("#pag").html(showPag(thisPage,npages));
     });
于 2011-04-27T18:43:56.180 に答える
3

.aPage呼び出すたびに古いリンクを破棄しているため、または.html()のいずれかを使用する必要があります.live().delegate()

使用する.live()

$(".aPage").live("click", function(event){
   var thisPage=$(this).text()
   $("#pag").html(showPag(thisPage,npages));
});

使用する.delegate()

$("#pag").delegate(".aPage", "click", function(event){
   var thisPage=$(this).text()
   $("#pag").html(showPag(thisPage,npages));
});
于 2011-04-27T18:45:21.140 に答える
1

ページを再作成するスパンにクリック イベントを再バインドするか、jQuery のデリゲートまたはライブ関数のいずれかを使用する必要があります。何が起こっているかというと、クリック イベントをバインドする方法は、クラス aPage を持つ既存のスパンのみをカバーするということです。ライブまたはデリゲートは、既存および将来にバインドされます。

$(".aPage").live("click", function(event){
           var thisPage=$(this).text()
     $("#pag").html(showPag(thisPage,npages));
     });
于 2011-04-27T18:45:20.330 に答える
1

あなたのクリックイベントは、 #pag 要素ではなく、クラス .aPage の要素に登録されています。クラス .aPage を持つこの要素がたまたま #pag 要素内にある場合 (指定しなかったので、ここでは推測しています)、ページの html を置き換えると破棄されます。これを修正するには、クリック ハンドラーを #pag にバインドします。

以下を試すこともできます。

変化する

$(".aPage").click(function(){...})

$(".aPage").live('click',function(){...})

これは、そのクラス名を持つすべての現在および将来の要素にバインドされます。

于 2011-04-27T18:46:45.993 に答える
0

jQuery 1.7 以降、ライブはサポートされなくなりましたが、デリゲートが推奨されます。

$("#pag").delegate(".aPage", "click", function(event){
    var thisPage=$(this).text()
    $("#pag").html(showPag(thisPage,npages));  
});
于 2013-12-23T08:50:29.523 に答える