0
所以我仍然試圖圍繞自己的jQuery插件,但我很難搞清楚的一件事情是搞清楚如何從插件內部的函數內進行回調。當我在它的功能之外做回調時。功能內的jQuery插件回調
下面的例子已被削減,所以我不知道他們是否會工作,如果你自己嘗試。只是舉例
工作例如:
$.fn.mvSelect = function(options){
var settings = $.extend({
selectColor: "#cccccc",
search: true,
checkbox: true,
onItemSelected: function() { },
onItemChecked: function() { }
}, options);
this.addClass("ulStyle");
this.find("li").each(function(){
$(this).addClass("itemStyle");
$(this).click(function (e) {
$("*").removeClass("itemSelected");
$(this).addClass("itemSelected");
settings.onItemSelected.call($(this)); // <-- this one works
});
});
};
非工作示例:
$.fn.mvSelect = function (options) {
var settings = $.extend({
selectColor: "#cccccc",
search: true,
checkbox: true,
onItemSelected: function (e) { },
onItemChecked: function (e) { }
}, options);
function refreshData() {
that.find("li").each(function() {
$(this).addClass("itemStyle");
$(this).click(function (e) {
$("*").removeClass("itemSelected");
$(this).addClass("itemSelected");
settings.onItemSelected.call($(this)); // <-- Does not work
});
});
return that;
};
if (someThing === "refreshData")
refreshData();
};
我認爲這有什麼用範圍做,因爲當我看着的該設置項目的作用域,它在非工作版本中顯示關閉幾次,而在工作版本中,它不顯示關閉。無論哪種方式,我似乎無法找到任何有關如何使其正常工作的信息。事件本身確實有效,它的回調不會讓我回到其他代碼。