trigger
呼び出しのコールバックでカスタムイベントをトリガーする必要がありますが、動作させることができません。
私はこれを試しました:
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
function runtests () {
console.log("clicked the input");
};
$input.trigger('click', runtests());
この:
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
$input.trigger('click', function(){
console.log("clicked the input");
}
どちらも機能しません。
質問:
要素のクリックをトリガーするときにコールバック関数を実行するにはどうすればよいですか?
trigger
を呼び出すと、バインドされたイベントハンドラーがすぐに実行されるため、コールバックは必要ありません。使うだけ
$input.trigger('click');
runtests();
はい-トリガーがコールバックを受け取らないのは事実ですが、パラメーターとしてコールバックを渡すことができます。
//.trigger( eventType [, extraParameters ] )
$("#element").bind("customCall", function(e, callback){
callback();
}
var callback = function(){alert("Hello");}
$("#element").trigger("customCall",[callback]);
これが役立つことを願っています
最初にクリックイベントをバインドする必要があり、次にクリックイベントをトリガーできます。
$input.bind('click', function() {
console.log("clicked the input");
});
$input.trigger('click');
トリガーにはコールバック関数がありません。
.trigger( eventType [, extraParameters ] )
できること
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
$input.on('click',function(){
console.log("clicked the input");
});
bind
またはon
を使用してコールバックを追加する必要があります。あなたの場合、次のようになります。
_var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
function runtests () {
console.log("clicked the input");
};
$input.bind('click', runtests);
_
バインドクリックのさらに短いバージョンは$input.click(runtests)
です
次に、クリック時に呼び出されるか、$input.trigger('click')
または単に$input.click()
を使用して手動でトリガーできます。
すべての入力にクリックハンドラーがあるが、特定の要素で何かをしたい場合:
var $container = $(".ui-popup-container"),
special = 2;
$container.on('click', 'input', function() {
// do something for every input
if($(this).index() == special) {
// your "callback", e.g. the function you want to execute on input:eq2 click
myfunction();
}
}).find('input').eq(special).trigger('click');