如何处理骨干网中特定目标的点击事件

时间:2013-05-10 12:47:25

标签: javascript jquery html5 backbone.js

html文件

<div class="work">
    <ul id="palette" class="palette-pen" style="top:178px;"> 
        <li class="palette-colour-1"><span></span></li>
        <li class="palette-colour-2"><span></span></li>
        <li class="palette-colour-3"><span></span></li>
        <li class="palette-colour-4"><span></span></li>
        <li class="palette-colour-5"><span></span></li> 
        <li class="palette-colour-6"><span></span></li>
    </ul>
</div>

js file

VC.View.Workspace_Tool_Image = Backbone.View.extend({
    events : {  
        'click .palette-pen li' : 'paint'
    },

    initialize : function() {
        var obj = this;

        /* scope */
        _.bindAll(this, 'paint');
    },

    paint: function() {
        var obj = this;
        $('ul.palette-pen li').click(function(e) { 
            alert(obj.$el.attr('class'));
        });
    },
})

我想获得我点击的特定li的课程,但是当我第一次点击li时,它就没有提醒。当我再次点击时,它会针对div的类(work)提供1个提醒,而不是我点击的li的类。

如果我点击li第n次,那么它会给我n-1警报。为什么会这样?无论是单次点击是第n次还是第7次,都必须只发出一次警报。

所以请帮我找出解决方案。

1 个答案:

答案 0 :(得分:3)

每次单击时,您都会添加一个显示警报的单击侦听器。所以结果是有道理的。由于只在您点击时调用“paint”,只需将警报直接放在:

paint : function(e) {
    alert($(e.currentTarget).attr('class'));
},