0

角度のあるアプリを作成していますが、jQuery を使用する必要があるインスタンスを見つけました。別の非表示のボタンでクリック イベントを発生させるボタンをクリックする必要があります。これは奇妙に思えるかもしれませんが、私が使用している角度モジュール ng-file-upload はスタイル付きアイコンでは機能しないため、この機能が必要です。

私の解決策は、2 つのボタンを作成することでした。1 つは非表示、もう 1 つは透明です。次に、スタイル付きのアイコンを透明なボタンに配置し、他のボタンを非表示にしました。次に、jQuery を使用して、最初のボタンがクリックされたときに 2 番目のボタンがクリックされるようにしました。これは、最新の 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 を使用しています。これまたはこれを達成するための代替方法に関するヘルプは大歓迎です。前もって感謝します!

更新: secondClick が起動しているため、この問題は angular-file-select に関係している可能性があると思います。ただし、angular-file-select はそうではありません。また、secondClick を表示に設定し、直接クリックすると ng-file-select が起動します。

4

3 に答える 3

2

あなたが言及していないように、あなたのアプリのAngularバージョンが使用しています。ただし、使用している場合は、 IE8ブラウザー angular 1.3.xをサポートしていないことを知っておく必要があります。

IE ガイドのドキュメント。

メモがあります:

注: AngularJS 1.3 は IE8 のサポートを終了しました。詳細については、ブログをご覧ください。AngularJS 1.2 は引き続き IE8 をサポートしますが、コア チームは IE8 以前に固有の問題に時間を費やす予定はありません。


あなたのコメントによると:

サイトの他のすべての部分は 100% 角度があり、完璧に機能します。私が角度のある解決策を考えられなかったのは、この1つの状況だけです。

次に、Angular には と呼ばれる jQuery の軽量バージョンがあることをお勧めしますjqLite。次のように使用できます。

angular.element('#firstClick').on('click', function() {
    angular.element('#secondClick').trigger('click');
});

angular.element のドキュメント

于 2015-04-09T09:29:21.197 に答える
0

編集:次を使用して、ブラウザのサポートが良好な要素を介してマウスイベントを転送できます: http://www.vinylfox.com/forwarding-mouse-events-through-layers/

幸運にも古いブラウザーを使用する必要がない場合は、pointer-events CSS プロパティを取り除くことができます。

#firstClick {
    pointer-events: none;
    }
于 2015-04-09T09:30:21.357 に答える