1

私はこの機能を持っています:

$('body').on('click', '.kategorija_izbor ul a, .mali_oglas a[role=pretraga]', function(e){
        var mgl_wrapper = $('.mali_oglasi_wrapper'),
        mgl = $(".mali_oglasi"), 
        mgl_space =  $(this).attr('href').replace(/\s+/g, '-').toLowerCase();
        link = mgl_space + ' .mali_oglasi';         
        mgl.animate({'opacity' : 0}, 400, function(){
            mgl_wrapper.load(link, function(){
                mgl.animate({'opacity' : 1}, 400);
            });
        });
        e.preventDefault(); 
    });

それは機能していますが、それを行う別の方法があることを知りたいです。この方法は時間がかかり、リソースの効率が悪いように思えます。ページがクリックされるたびに、スクリプトは DOM を通過し、特定の要素を検索します。.kategorija_izbor ul aと .mali_oglas a[role=pretraga]を格納する方法はありますか (それらはロード関数によってロードされます)?

編集私

.kategorija_izbor ul aと .mali_oglas a[role=pretraga] はmgl_wrapper *( $('.mali_oglasi_wrapper')) の子であり、クリックされるたびに動的に作成されます。

4

1 に答える 1

4

要素が にのみロードされている場合は、jQuery が全体を検索する必要がないように、ハンドラーのスコープmglを制限するだけです。clickbody

var $mgl_wrapper = $('.mali_oglasi_wrapper');
var $mgl = $('.mali_oglasi');

$mgl.on('click', '.kategorija_izbor ul a, .mali_oglas a[role=pretraga]', function(e) {
    var mgl_space =  this.href.replace(/\s+/g, '-').toLowerCase();

    $mgl.animate({'opacity' : 0}, 400, function() {
        $mgl_wrapper.load(mgl_space + ' .mali_oglasi', function() {
            $mgl.animate({'opacity' : 1}, 400);
        });
    });

    e.preventDefault(); 
});
于 2012-09-29T20:26:42.080 に答える