Jquery`on`事件处理程序:事件委派和传递自定义数据
我有一个通过ajax调用加载的表单,这意味着我需要使用Jquery`on`事件处理程序:事件委派和传递自定义数据,jquery,Jquery,我有一个通过ajax调用加载的表单,这意味着我需要使用事件委托,以便检测表单中的选择框何时被单击 我的代码如下所示: $( document ).on( "click", "form select", selectFunction ); 但是,除了利用事件委托,我还希望能够将自定义事件.data传递给on处理程序函数 所以,我希望我的代码片段如下所示 $( document ).on( "click", "form select", { foo: 'bar' }, selectFunction
事件委托
,以便检测表单中的选择框何时被单击
我的代码如下所示:
$( document ).on( "click", "form select", selectFunction );
但是,除了利用事件委托
,我还希望能够将自定义事件.data
传递给on
处理程序函数
所以,我希望我的代码片段如下所示
$( document ).on( "click", "form select", { foo: 'bar' }, selectFunction );
…我的处理函数的行为类似于这样
function selectFunction( event ) {
console.log(event.data.foo); // outputs 'bar'
}
不幸的是,event.data
返回undefined
谢谢您的帮助。
这项工程—
$(document).on("click","#form-select", {foo: "bar"},SubmitForm);
function SubmitForm(event)
{
alert(event.data.foo);
}
我认为问题出在您使用的选择器-“表单选择”或其他完全不同的选项上。对我来说很好:(嗯,
单击
不起作用,所以我使用了焦点
)。因此,如果它不起作用,那么您就没有传递正确的值作为数据参数(或者根本没有)。为什么不这样做:$(文档)。在(“单击”,“表单选择”,selectFunction({foo:'bar');@kasperTaeymans:selectFunction
看起来怎么样?单击
在这里工作:(只需在红色区域内单击)函数选择函数(事件,数据){alert(data.foo)}如果这不是一个选项,您需要创建一个自定义事件。请参阅此链接,这对我很有用。这很奇怪,因为在处理程序函数中,console.log event
将在其数据字段中显示null。但是,console.log event.data
将显示对象文本{foo:'bar'}
。我怀疑这与javascript的异步性质有关。但是,我不知道发生这种情况的确切原因。@KurtMueller很高兴我能提供帮助。祝你好运!!