我試圖爲Extrac此功能的方法:提取方法
addWidgetControls: function() {
var iNettuts = this,
$ = this.jQuery,
settings = this.settings;
$(settings.widgetSelector, $(settings.columns)).each(function() {
var thisWidgetSettings = iNettuts.getWidgetSettings(this.id);
if (thisWidgetSettings.removable) {
$('<a href="#" class="remove">CLOSE</a>').mousedown(function (e) {
e.stopPropagation();
}).click(function() {
$(this).parents(settings.widgetSelector).animate({
opacity: 0
}, function() {
$(this).wrap('<div/>').parent().slideUp(function() {
$(this).remove();
});
});
return false;
}).appendTo($(settings.handleSelector, this));
}
if (thisWidgetSettings.collapsible) {
$('<a href="#" class="collapse">COLLAPSE</a>').mousedown(function (e) {
e.stopPropagation();
}).toggle(function() {
$(this).css({ backgroundPosition: '-38px 0' })
.parents(settings.widgetSelector)
.find(settings.contentSelector).hide();
return false;
}, function() {
$(this).css({ backgroundPosition: '' })
.parents(settings.widgetSelector)
.find(settings.contentSelector).show();
return false;
}).prependTo($(settings.handleSelector, this));
}
});
},
我提取的代碼從這個函數是這樣的:
addWidgetControls: function() {
var iNettuts = this,
$ = this.jQuery,
settings = this.settings,
func = this.doWidget;
$(settings.widgetSelector, $(settings.columns)).each(function() {
func(this);
});
},
doWidget: function (widg) {
$ = jQuery;
settings = iNettuts.settings;
var thisWidgetSettings = iNettuts.getWidgetSettings(widg.id);
if (thisWidgetSettings.removable) {
$('<a href="#" class="remove"></a>').mousedown(function (e) {
e.stopPropagation();
}).click(function() {
$(widg).parents(settings.widgetSelector).animate({
opacity: 0
}, function() {
widg.wrap('<div/>').parent().slideUp(function() {
widg.remove();
});
});
return false;
}).appendTo($(settings.handleSelector, widg));
}
if (thisWidgetSettings.collapsible) {
$('<a href="#" class="collapse"></a>').mousedown(function (e) {
e.stopPropagation();
}).toggle(function() {
$(widg).css({ backgroundPosition: '-38px 0' })
.parents(settings.widgetSelector)
.find(settings.contentSelector).hide();
return false;
}, function() {
$(widg).css({ backgroundPosition: '' })
.parents(settings.widgetSelector)
.find(settings.contentSelector).show();
return false;
}).prependTo($(settings.handleSelector, widg));
}
},
我剛複製功能代碼,將this
替換爲widg
,並添加widg
作爲參數。也許$(widge)
和widg
之間有區別。 但它不起作用。我錯過了什麼?有沒有一種工具可以輕鬆做到這一點?謝謝。
PS:順便說一句,這是從this tutorial抓住。
謝謝,但我不認爲這是問題,因爲iNettuts是一個全局對象,我已經加了兩個變量來解決你指的是('$ =問題jQuery; settings = iNettuts.settings;')。爲了更多地解釋這個問題,我不得不說增加了代碼中的變化(關閉和摺疊按鈕被添加到小工具中),但是當我點擊它們時,什麼都不會發生。也許這將有助於發現問題。 –