我现在有一个BackboneJS网站,但遇到了问题。我有一个使用jQuery.click()事件处理程序的Backbone View。现在,我在$(document).ready()函数中全局设置了处理程序。但是,我意识到,如果我加载使用处理程序1st的页面,那么一切正常,但是如果我更改页面(更改主干显示的视图),然后返回到原始页面(刷新使用该处理程序的DOM) ),则不再触发事件。我该如何处理?这肯定是很多人遇到的一个问题,所以我想Backbone有办法解决这个问题。

否则,我的计划是仅在渲染视图后调用一个函数以重置处理程序。这是最好的方法,还是骨干网有办法解决这个问题?

$(document).ready(function(){
    $('.section-pulldown').on('click', function(){
        var el = $(this).next();
        var par = $(this).parent();
        var arrow = $(this).children('img');

        if (el.css('display') == 'none') {
            el.css('padding-bottom', '50px');
            arrow.attr('src', 'images/downarrow.png');
            par.css('box-shadow', '0px 0px 15px 3px #A8A8A8 inset');
            $(this).next().slideToggle(700);

        }
        else {
            $(this).next().slideToggle(700, function(){
                el.css('padding-bottom', '0px');
                par.css('box-shadow', '2px 2px 15px 2px #CCCCCC inset');
                arrow.attr('src', 'images/uparrow.png');
            });

        }

    });
})

最佳答案

尝试类似的东西:

$(function() {
    $(document).on('click', '.section-pulldown', function(e) {
        var el = $(this).next();
        var par = $(this).parent();
        var arrow = $(this).children('img');

        if (el.css('display') == 'none') {
            el.css('padding-bottom', '50px');
            arrow.attr('src', 'images/downarrow.png');
            par.css('box-shadow', '0px 0px 15px 3px #A8A8A8 inset');
            $(this).next().slideToggle(700);

        }
        else {
            $(this).next().slideToggle(700, function(){
                el.css('padding-bottom', '0px');
                par.css('box-shadow', '2px 2px 15px 2px #CCCCCC inset');
                arrow.attr('src', 'images/uparrow.png');
            });

        }

    });
})


jQuery .on as a delegate

10-02 15:20
查看更多