Gram teraz z frameworkiem AngularJS i natknąłem się na problem. Zrobiłem dyrektywę, która nazywa się "enter". Wywołuje funkcje na mouseenter
i mouseleave
. Zastosowałem go jako atrybut do elementów wiersza tabeli. To jest teraz wyzwalane dla każdego elementu potomnego (wszystkie kolumny i itp.), Ale powinno być uruchamiane tylko wtedy, gdy przesuniesz mysz nad wiersz tabeli.AngularJS: Zapobieganie wyzwalaniu zdarzenia "mouseenter" na elementach potomnych
To jest jak moja dyrektywa wygląda następująco:
myapp.directive('enter', function(){
return {
restrict: 'A', // link to attribute... default is A
link: function (scope, element){
element.bind('mouseenter',function() {
console.log('MOUSE ENTER: ' + scope.movie.title);
});
element.bind('mouseleave',function() {
console.log('LEAVE');
});
}
}
});
Oto przykład: http://jsfiddle.net/dJGfd/1/
Trzeba otworzyć konsolę Javascript by sprawdzić wiadomości dziennika.
Jaki jest najlepszy sposób na uzyskanie pożądanej funkcjonalności w AngularJS? Wolę niż używać jQuery, jeśli istnieje rozsądne rozwiązanie AngularJS.
To wygląda jak błąd do mnie. Wystarczy krótka notka, można również zastosować dyrektywę Angular nazwaną "ng-mouseenter"/"ng-mouseleave". Mój pomysł polegałby na zapisaniu ostatniego osnutego elementu i sprawdzeniu, czy jest inny. –