跳到底部查询问题
$.fn.myPlugin = function( options ) {
var options = $.extend({
myOption: true,
edit: function() {},
done: function() {}
}, options);
options.edit.call(this);
options.done.call(this);
//plugin guts removed to prevent over complication
return {
edit: function(obj) {
$(obj).closest('#myParent').find('#myInput').autosizeInput(); //plugin to autosize an input
},
done: function(obj) {
$(this).closest('tr').find('td').not('.not').each(function(i) {
//do some things
});
}
}
});
请记住,这是我的插件的缩减版本。
$(document).ready(function() {
var myPlugin = $('.editable').myPlugin({
edit: $(this).on('click', '.edit-td', function(e) {
e.preventDefault();
//do some page specific stuff
myPlugin.edit( $(this) ); //call the edit returned function
}),
done: $(this).on('click', '.done-td', function(e) {
e.preventDefault();
//do some page specific stuff
myPlugin.done( $(this) ); //call the done returned function
});
});
});
这在大多数情况下效果很好,但是,我真正想要的是每次触发特定回调时都会在我的插件中调用函数 - 无需从插件外部调用。
我尝试在我的插件中包含委托事件:
$(this).on('click', '.edit-td', function(e) {
e.preventDefault();
$(this).closest('#myParent').find('#myInput').autosizeInput();
});
$(this).on('click', '.done-td', function(e) {
e.preventDefault();
$(this).closest('tr').find('td').not('.not').each(function(i) {
//do some things
});
});
但是当.edit-td
被触发时,它会传播并触发.done-td
事件,如果我将e.stopPropagation()
放入edit-td
函数(因为它已被委派){{ 1}}完全停止射击。
非委托方法:
edit-td
但是在内部函数完成之前,我无法将返回的对象($(this).find('.done-td').click(function(e, this) {});
)解析为内部函数。 (只是未定义或this
)。
避免问题变为本地化 -
我需要从我的内部调用函数 每次触发特定回调时插件。 不使用闭包调用它
类似的东西:
missing formal parameter
答案 0 :(得分:0)
我需要像这样返回一个函数:
return {
enable: function(arg) {
//do something
},
disable: function(arg) {
//do something
}
}
这样我可以通过引用自己从插件中调用它:
this.myPlugin().disable();