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 propattrtext函数来更新链接属性,这应该可以解决问题。

或者,将事件处理程序存储在变量中并在处理程序中重新绑定也可以解决问题。

于 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

替换clickon

演示

$("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 回答