如何在backbone.js中停止传播

时间:2014-12-29 12:01:58

标签: javascript jquery backbone.js

我的HTML代码是这样的:

<li data-id="<%=p.id %>" data-len="<%=products.length %>" data-count="<%=count %>">
    <div class="pro_list_imgbox">
        <img src="" />
    </div>
</li>

我的js代码是这样的:

events: {
            'click .pro_list_imgbox': 'loadPic',
            'click li[data-id]': 'detailHandler'
        },

loadPic: function (e) {
            var target = $(e.target),
                pic = target[0].nodeName === 'IMG' ? target : target.find('img');

            if (!pic.data('loadState')) {
                e.stopPropagation();
                if (e.isPropagationStopped()) {
                    alert('stoped');
                }
                pic.attr('src', pic[0].src += '?t' + new Date().getTime());
            }

        },

detailHandler: function (e) {
            alert('haha');
        },

当我点击img元素并成功调用它时,我在函数loadPic中调用了e.stopPropagation()。 但为什么细节处理程序仍然存在,并且哈哈&#39;警报。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

看起来你几乎是在正确的方向。请检查以下问题是否可以解决您的问题:

events: {
            'click .pro_list_imgbox': 'loadPic',
            'click li[data-id]': 'detailHandler'
        },

loadPic: function (e) {
            var target = $(e.target),
                pic = target[0].nodeName === 'IMG' ? target : target.find('img');

            if (!pic.data('loadState')) {
                pic.attr('src', pic[0].src += '?t' + new Date().getTime());
            }
           //this return statement will not allow the event to propagate to the parent element.
            return false;

        },

detailHandler: function (e) {
            alert('haha');
        },