2016-06-16 6 views
0

私はいくつかのフォーム要素を動的に作成しており、各要素に対してイベントをトリガーする必要があります。カスタムjqueryイベントをトリガーする

は、私がこのような何かを持っていると言う:

$("#select_123").val("easy").change().trigger("createRow"); 


$("#container").bind("createRow",function() { 
    //doStuff 
} 

私は「createRow」イベントを実行するために.triggerをチェーンにはどうすればよいです?さらに.bindの代わりに.delegateを使用するにはどうすればよいですか?

+0

。イベントをトリガする前に*イベントをフックすると(上記の*が*の後に引かれます)、イベントを受け取ります。 –

+3

サイドノート: '.bind'と' .delegate'は完全に古くなっています。現代的な方法は['on'](http://api.jquery.com)です。 –

+0

うわー、再注文し、それは働いた。うんいいね。 – DanielOlivasJr

答えて

1

あなたのコードは、ハンドラをハンドリングする前にイベントを発生させます。注文を元に戻すと正常に機能します。

jQueryのカスタムイベントがデフォルトでバブルするため、イベントデリゲーションも機能します。だからあなたは子供のイベントを引き起こし、親のためにそれを観察する。

例:私はあなたの質問に次はないよ

$(".child").on("click", function() { 
 
    // Fire the custom event on the child element 
 
    $(this).trigger("custom-event"); 
 
}); 
 

 
// Watch for custom events using delegation 
 
$("#parent").on("custom-event", ".child", function(e) { 
 
    console.log("Got event: " + e.type); 
 
});
<div id="parent"> 
 
    <div class="child">Click me</div> 
 
</div> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

+0

ありがとうTJ。 – DanielOlivasJr

関連する問題