javascript - 如何处理主干js中特定目标的点击事件

标签 javascript jquery html 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文件

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 时,它不会发出警报。当我第二次单击时,它会发出 1 个警报,其中包含 div 的类(work),而不是我的 li 的类点击。

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

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

最佳答案

看来每次单击时,您都会添加一个显示警报的单击监听器。所以这个结果是有道理的。由于“paint”仅在您单击时被调用,因此只需将警报直接放入其中即可:

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

关于javascript - 如何处理主干js中特定目标的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16482624/

相关文章:

javascript - 使用 jQuery 创建带有 onerror 属性的 img

javascript - 无论屏幕大小如何,如何从 JS 强制使用 CSS @media 样式?

javascript - 如何将链接样式表添加到 document.write

javascript:方法的单独功能或嵌入对象中?

css - 文本和 SVG 之间没有换行符

javascript - 如何验证动态添加的输入字段

javascript - 响应式菜单,带有可点击的子菜单,可根据屏幕尺寸改变位置

javascript - 在 html/javascript 警报中进行测验不起作用

jquery - jstree:多重搜索并突出显示树中的所有搜索结果?

javascript - 如何使用 OOJS 创建 Accordion