2

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ファイル

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の class( ) で1 つのアラートが表示されます。workli

n 回クリックすると、lin-1 アラートが表示されます。なぜこれが起こるのですか?n 回目でも 7 回目でも、1 回クリックしてもアラートは 1 回しか表示されません。

ですから、解決策を見つけるのを手伝ってください。

4

1 に答える 1

3

クリックするたびに、アラートを表示するクリックリスナーを追加しているようです。したがって、結果は理にかなっています。「ペイント」はクリックしたときにのみ呼び出されるため、アラートを直接入れてください:

paint : function(e) {
    alert($(e.currentTarget).attr('class'));
},
于 2013-05-10T12:52:31.473 に答える