【发布时间】:2016-02-19 20:24:16
【问题描述】:
我正在编写一个 Jquery 插件,我需要将其用作选择器。但它不起作用。
插件代码如下:
$.fn.submitNow=function(onSuccess){
var thisElement=this;
$(document).on('submit',this,function(e){
e.preventDefault();
$.get($(this).attr('action'),function(data){
onSuccess.call(thisElement, data);
});
});
}
这里是 html sn-p (nb.动态创建):
<form action="demoLink" class="chosen-form">
<input name="code" type="text">
<button type="submit">Submit</button>
</form>
代码如下:
$('.chosen-form').submitNow(function(data){
alert(data);
});
我的猜测是 this 作为 on() 函数中的参数不能使用。如何在 on() 函数中将 this 作为选择器传递?
【问题讨论】:
-
真的没有理由使用事件委托,因为你初始化插件的方式必须在那个时候存在元素
-
究竟是什么不工作?是否抛出错误?是否进行了ajax调用?您是否考虑过一些错误处理?您的陈述“它不起作用” 不是正确的问题描述
-
this 没有通过 on() 函数。因此选择了整个 document 而不是表单。
-
对...因为
on()只接受字符串作为目标选择器,但您不需要首先委托...使用$(this).submit(...。您打算在多个表单上使用它吗? -
如果您确实需要委托,则需要更改整个插件
标签: javascript jquery html jquery-plugins