Моя цель довольно проста. На изображениях будет отображаться директива show-overlay. Если вы введете мышь, она будет завершена с родительским интервалом и добавит оверлей. На mouseleave он удалит родительский диапазон и оверлей div. Но по какой-то причине, если я использую replaceWith на mouseleave, это приводит к непредвиденному срабатыванию mouseenter несколько раз для следующего входа.Угловая замена в директиве и мыши/мышеловке
директива как ниже
app.directive('showOverlay', function($compile) {
return {
restrict: 'A',
link: function($scope, $element, attrs) {
$element.on('mouseenter', function (e) {
console.warn('mouseenter');
$el = $element.wrap("<span class='img'></div>")
$el = $el.parent().append("<div ng-mouseleave='cancelEditMode($event)' class='overlay'></div>");
$element.parent().addClass("hover");
var inputElem = $element.parent();
$compile(inputElem)($scope);
});
$scope.cancelEditMode = function(e) {
$element.parent().replaceWith($element);
};
}
};
});
Из приведенного выше кода, выглядит ReplaceWith вызывает $ элемент иметь несколько событие MouseEnter. jsfiddle здесь: http://jsfiddle.net/RmDuw/979/
Спасибо elfan, но проблема в том, что я не могу оставить дом с каким-то дополнительным элементом, который изначально не был там. Я имею в виду, я должен удалить дополнительные элементы, такие как span, orverlay div в конце. – masum7