2013-06-24 1 views
5

С backbokne.js, наведением мыши и MouseOut событиями в целях не работает, как я ожидал:Backbone - View запускает событие mouseout, даже если оно находится внутри корня.

enter image description here

Красной часть (корневой класс дела) является родителем внутренней ДИВ им информация -Box. При перемещении мыши от корня к информационному окну он запускает событие mouseout для корня, даже если информационный ящик является дочерним элементом root. Однако я хочу, чтобы остаться внутри корня, а мой курсор перемещается от

Вот мой очень простой HTML:

<script type="text/template" id="box-template"> 
    <div class="root"> 
     <div class="info-box"> 
      Test title 
     </div> 
    </div> 
</script> 

Вот мое мнение:

var DealViewClass = Backbone.View.extend({ 
    events: { 
     'mouseover': 'boxMouseOver', 
     'mouseout': 'boxMouseOut' 
    }, 
    boxMouseOver: function(e){ 
     console.log('inside!'); 
    } 
    }, 
    boxMouseOut: function(e){ 
     console.log('outside!') 
    } 
}); 

инициализирую мой взгляд как таковой :

var template = _.template($('#box-template').html()); 
    var dealView = new DealViewClass({ 
     model: model, 
     el: template   
    }); 

Как я могу решить этот ребенок, запускающий «выключение» родительской проблемы?

ответ

0

Изменить Ваши события, чтобы они делегируют в .info-box класса:

'mouseover .info-box': 'boxMouseOver', 
'mouseout .info-box': 'boxMouseOut' 
+0

Спасибо за попытку, но этого я не хочу. Я просто хочу, чтобы как корневой, так и инфо-ящик наступали как один и тот же объект, поэтому, перемещаясь между ними, они не вызывают мышь. – Hellnar

0

Я сомневаюсь, что это может быть возможным, чтобы избежать MouseOut события при переходе от родительских дел до внутри DIV, однако, он будет снова инициировать событие курсора, находящиеся ...

Сказать, что, когда вы объявляете события для вашего View, было бы желательно, чтобы указать селекторы ...

... 
events: { 
     'mouseover .root': 'boxMouseOver', 
     'mouseover .info-box': 'boxMouseOver', 
     'mouseout .root': 'boxMouseOut' 
    }, 
... 

I сделал образец на jsFiddle как это ...

http://jsfiddle.net/Tn8PX/3/