如何在jQuery触发器上运行回调函数(“click”)?
我需要在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]);
希望这会有所帮助
首先,您需要绑定click事件,然后您可以触发click事件。
$input.bind('click', function() { console.log("clicked the input"); }); $input.trigger('click');
触发器没有回调函数。
.trigger( eventType [, extraParameters ] )
Official Document
你可以做什么
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()
手动触发它。
触发器没有回调函数 – 您可以更好地重写代码以使用.on方法。
$("body").on("click", "#click", function() { alert("Clicked!"); });
JSFiddle 。
如果您在每个输入上都有一个单击处理程序但想要对特定元素执行某些操作:
var $container = $(".ui-popup-container"), special = 2; $container.on('click', 'input', function() { // do something for every input if($(this).index() == special) { // your "callback", eg the function you want to execute on input:eq2 click myfunction(); } }).find('input').eq(special).trigger('click');