5

在Backbone events(View)中单击时,我试图获取 div 的数据属性。

如果我单击 div,我可以实现这一点,listItem但如果我要单击子元素跨度,它将失败,因为$(e.target)将是跨度。

那么如何获取父元素的data属性,即使子元素被点击了呢?

<div class="listItem" data-showInfo="true">
    <span class="arrow"></span>
</div>

events:{
  "click .listItem": function(e) {

    var $listItem= $(e.target);

    console.log($listItem.data('showInfo'));
  }
}
4

3 回答 3

9

使用event.currentTarget而不是event.target,它将被设置为.listItem独立于您单击的 DOM 节点的选择器

var V = Backbone.View.extend({
    events: {
        'click .listItem' : function(e) {
            console.log($(e.currentTarget).data('showinfo'));
        }
    }
});

还有一个演示http://jsfiddle.net/nikoshr/QyP3Z/

于 2013-04-10T12:13:47.703 回答
6

你可以这样做:

$('.arrow').click(function(){
alert($(this).parent().attr('data-showInfo'));
});

你的例子在这个JSFiddle

于 2013-04-10T11:09:29.040 回答
2
events:{    
    "click .arrow": function(){
        console.log($(this).parent('.listItem').attr('data-showInfo'));
    };
}  
于 2013-04-10T11:48:29.340 回答