谁能解释为什么会这样?
这是我在名为something
的插件中的代码:
(function($){
$.fn.extend({
something: function(options) {
// Here I define defaults
$(this).bind('change', function () {
return $(this).each(function() {
// a function body
});
});
}
});
})(jQuery);
我在另一个js中将此插件称为:
var myarray=new Array();
myarray[0] = $('#selector').something({
regex:/^([\u0600-\u06FF]|\s)*$/,
// another options
});
$('#selector').change(function (){
alert (myarray[0]);
});
在选择器的每次更改中,它都会返回
undefined
。这完全使我发疯。谢谢任何人能帮助我。
编辑:
您可以阅读我的完整代码here。
最佳答案
在您的插件中,您只是将change
事件处理程序附加到元素上,该事件处理程序将在所有匹配的元素集上运行循环并返回jQuery对象。
如果要从something
插件返回某些内容,则return语句应在事件处理程序之外。
$.fn.extend({
something: function(options) {
return $(this).each(function() {
//Do processing here
});
}
});
现在你可以使用这个
var myarray = $('#selector').something({
regex:/^([\u0600-\u06FF]|\s)*$/,
// another options
});
$('#selector').change(function (){
alert (myarray[0]);
});
请注意,
myarray
将是一个数组,因为jQuery each
返回一个本身是DOM元素数组的jQuery对象。