委任されたイベントハンドラを手動でトリガするjQueryの方法はありますか?jQueryを使用して委任されたイベントを手動でトリガーするにはどうすればよいですか?
テイク次のコード例:
<div class="container">
<input type="button" value="Hello">
<span class="output"></span>
</div>
<script>
$('.container')
.on('click', '[type=button]', function(e) {
$(e.delegateTarget).find('.output').text($(this).val());
})
.find('[type=button]').triggerHandler('click');
</script>
(オンライン:http://jsfiddle.net/TcHBE/)
私は、これがうまくいくことを期待していた、とテキスト「こんにちは」、実際にボタンをクリックせずにスパンに表示されますが、それはしません。
.ouput
要素は、.container
の中のいくつかの場所以外のボタンとは関係がないため、ハンドラ内でe.delegateTarget
を使用しています。そのため、私は委任イベントハンドラを最初に使用しています。
更新:イベントは、私が引き金にしたくない実際のコードでデフォルトの動作を持っているので、
また、私は、triggerHandler
を使用しています。 (実際のコードでは、イベントはのカスタムイベントhide
ですが、実際にはページのロード時にイベントハンドラをトリガするときにモーダルを非表示にしたくありません)。
ハンドラを名前付き関数に抽出して直接呼び出すことができますが、e.delegateTarget
を使用すると、how構造が複雑になります。
実際の問題を示すコードを更新してください。他のイベントハンドラやデフォルトアクションが実行されないようにすることは、明確ではありません。 – Prinzhorn