我正在创建一个有角度的应用程序,但我找到了一个需要使用jQuery的实例。我需要单击一个按钮,在另一个隐藏按钮上引发单击事件。我知道这看起来很奇怪,但我需要这个功能,因为我使用的角度模块ng-file-upload不适用于样式图标。
我的解决方案是创建两个按钮,一个隐藏,一个透明。然后我将样式图标放在透明按钮上,并隐藏另一个按钮。然后我使用jQuery导致在单击第一个按钮时单击第二个按钮。这在现代的firefox / chrome中运行良好,但在IE8中完全没有。
<button id="firstClick" class="fa fa-camera-retro"></button>
<button ng-hide="true" id="secondClick" ng-file-select ng-model="files">Upload</button>
$(document).on('click', '#firstClick', function() {
$('#secondClick').trigger('click');
});
我目前正在使用jQuery版本1.10.2。任何帮助这种或替代方法来实现这一点将不胜感激。提前致谢!
更新: 我认为问题可能与angular-file-select有关,因为secondClick现在正在触发。但是,angular-file-select不是。此外,我将secondClick设置为可见,当我直接点击它时,它会触发ng-file-select。
答案 0 :(得分:2)
正如您未提及应用的角度版本正在使用。但是,如果您使用angular 1.3.x
,那么您必须知道它不再支持 IE8 浏览器。
有一张纸条:
注意: AngularJS 1.3已经放弃了对IE8的支持。在我们的博客上阅读更多相关信息。 AngularJS 1.2将继续支持IE8,但核心团队不打算花时间解决IE8或更早版本的特定问题。
根据你的评论:
网站的每个其他部分都是100%角度,并且运行完美。正是在这种情况下,我无法想到一个有角度的解决方案。
然后我想建议你,angular中有一个精简版的jQuery,名为jqLite
。您可以使用它,例如:
angular.element('#firstClick').on('click', function() {
angular.element('#secondClick').trigger('click');
});
答案 1 :(得分:0)
编辑:您可以使用以下网址转发具有良好浏览器支持的元素的鼠标事件:http://www.vinylfox.com/forwarding-mouse-events-through-layers/
如果您有幸不必使用旧浏览器,那么您可以放弃指针事件CSS属性。
#firstClick {
pointer-events: none;
}
答案 2 :(得分:0)