繁体   English   中英

jQuery.on(“click”)在AngularJs中不起作用

[英]jQuery.on(“click”) does not work in AngularJs

我有一个像这样的AngularJs指令:

app.directive("showSuccess", function () {
        return {
            restrict: "A",
            link: function (_scope, _element) {
                _scope.$watch("successMessage", function (newVal) {
                    if (newVal) {
                        $(_element).find("#successMessage").html(newVal);
                        $(_element).slideDown().delay(3000).slideUp();
                    }
                });

                // Below code does not work
                $(_element).find(".hide-message").on("click", function () {
                    $(_element).slideUp();
                    _scope.successMessage = "";
                });
            }
        };
    });

相关的HTML是:

<div class="ui-state-success" show-success>
    <i class="icon-ok-sign small"></i>
    <span id="successMessage"></span>
    <i class="icon-remove hide-message"></i>
</div>

触发面板向下滑动时,屏幕截图为: 在此输入图像描述

问题是,当我点击“×”时,面板不会向上滑动(尽管它会在3秒延迟后向上滑动)。

我知道我可以使用ng-click执行此操作。 但有人知道为什么它在这种情况下不起作用? 谢谢。

这是因为jQuery动画排队了 你在它上面调用.slideUp()并期望它立即滑动; 然而,它目前正在等待它的3秒延迟。

一种解决方案是使用.stop(true, false)来取消之前排队的动画:

$(_element).find(".hide-message").on("click", function () {
    $(_element).stop(true, false).slideUp();
    _scope.successMessage = "";
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM