2

クリックイベントに問題があります。1回実行します。例:

私は3ページあります(1 2 3)。2をクリックすると機能します。その後、3ページで再び動作します。しかし、2回クリックしても機能しません。イベントはトリガーされません。

$("div .top.pagination a").click(function(){  

 PagNrClick = $(this).text();
            PagNrOld = $(".top.pagination .current").text();    
            RegMin = (NrReg-1)*(PagNrClick-1);


            //altera a pagina activa para por selecionar
            $(".top.pagination .current").replaceWith('<a title="'+PagNrOld+'" href="#'+PagNrOld+'" rel="history">'+PagNrOld+'</a>');
            //altera a pagina que clicou para activa
            $(this).replaceWith('<span class="current">'+PagNrClick+'</span>');             

            if(RegMin%2 || RegMin%0){
                RegMinValue = RegMin;
            }else{
                RegMinValue = RegMin+1;
            }
            //:gt(0) - greater then 0 não mostra a 1º posição(BUG DO JQUERY??????)
            if(PagNrClick==1){
                $("#thumbs li:eq(0)").show();
            }
            //esconde todos os registos e mostra os 12 proximos registos
            $(".thumbs li:visible").hide();
            $(".thumbs li:gt("+RegMinValue+"):lt("+NrReg+")").show();
});

jsfiddleにコードを挿入しました

http://jsfiddle.net/B2Usk/1/

4

4 に答える 4

2

replaceWithこれは、DOM の Html を置き換えてイベントを効果的にバインド解除する呼び出しに関連しています。jQuery propattr、およびtext関数を使用してリンク プロパティを更新すると、問題が解決するはずです。

または、イベント ハンドラーを変数に格納し、ハンドラーで再バインドすることでも問題を解決できます。

于 2013-03-21T11:40:07.173 に答える
2
$("div .top.pagination").on('click', 'a', function(){
    /* ... Youre event code ... */
});

以前のバージョンでも .live() を使用できますが、非推奨です。

于 2013-03-21T11:45:27.490 に答える
1

clickと置き換えますon

デモ

$("div .top.pagination").on('click', 'a',function(){
            PagNrClick = $(this).text();
            PagNrOld = $(".top.pagination .current").text();    
            RegMin = (NrReg-1)*(PagNrClick-1);


            //altera a pagina activa para por selecionar
            $(".top.pagination .current").replaceWith('<a title="'+PagNrOld+'" href="#'+PagNrOld+'" rel="history">'+PagNrOld+'</a>');
            //altera a pagina que clicou para activa
            $(this).replaceWith('<span class="current">'+PagNrClick+'</span>');             

            if(RegMin%2 || RegMin%0){
                RegMinValue = RegMin;
            }else{
                RegMinValue = RegMin+1;
            }
            //:gt(0) - greater then 0 não mostra a 1º posição(BUG DO JQUERY??????)
            if(PagNrClick==1){
                $("#thumbs li:eq(0)").show();
            }
            //esconde todos os registos e mostra os 12 proximos registos
            $(".thumbs li:visible").hide();
            $(".thumbs li:gt("+RegMinValue+"):lt("+NrReg+")").show();
        });         
于 2013-03-21T11:43:06.873 に答える
0

これは、<a>-Tag を削除しようとしているために発生し、クリック ハンドラが切り離されます。

.on()クリックの代わりに使用することを検討してください。その動作と構文はここで説明されています: http://api.jquery.com/on/

基本的に代わりに$("div .top.pagination a").click(function(){ /* ... */ });

次のように呼び出します。

$("div .top.pagination").on('click', 'a', function(){
    /* ... Youre event code ... */
});
于 2013-03-21T11:40:28.660 に答える