2

Codeigniter を使用してページネーションを作成しており、ajax 機能を追加したいと考えています。ページネーション リンクが最初にクリックされたときに JS が機能しています。2回目にクリックするとJSが動かず、PHPコントローラ経由でページネーションが動いています(この部分は問題なく動いています)。これはJSコードです:

var pag = $('#pagination a');

    pag.on('click', function(e){
        var pagination =
            {
            target : $(this).attr('href') + ' .mali_oglasi',    
            content : $('.mali_oglasi'),
            container: $('.mali_oglasi_wrapper')
            };

            pagination.content.animate({'opacity':0, scrollTop: 0}, 400, function(){
                pagination.container.load(pagination.target, function(){
                    pagination.content.animate({'opacity':1}, 400);
                });                
            });            
        e.preventDefault(); 
    });  

また、スクロールトップは機能しません。私は何を間違っていますか?

4

2 に答える 2

3

おそらく、DOM が毎回操作されるため、クリック イベントのハンドラーが失われるためです。

この方法を試してください:

$('body').on('click', '#pagination a', function(e) {
    var pagination =
    {
        target : $(this).attr('href') + ' .mali_oglasi',    
        content : $('.mali_oglasi'),
        container: $('.mali_oglasi_wrapper')
    };

    pagination.content.animate({
        'opacity':0, 
        scrollTop: 0
    }, 400, function(){
        pagination.container.load(pagination.target, function(){
            pagination.content.animate({
                'opacity':1
            }, 400);
        });                
    });            
    e.preventDefault(); 
});

これにより、各DOM操作でクリックイベントが確実に再バインドされます

于 2012-09-27T10:28:04.490 に答える
1

この兄弟を試してみてください..

要素がまだロードされていない可能性があります...

var pag = $('#pagination a');

pag.on('click', 'a', function(e){
    var pagination =
        {
        target : $(this).attr('href') + ' .mali_oglasi',    
        content : $('.mali_oglasi'),
        container: $('.mali_oglasi_wrapper')
        };

        pagination.content.animate({'opacity':0, scrollTop: 0}, 400, function(){
            pagination.container.load(pagination.target, function(){
                pagination.content.animate({'opacity':1}, 400);
            });                
        });            
    e.preventDefault(); 
});
于 2012-09-27T10:31:08.860 に答える