-2
我已經創建了一個項目一個jQuery插件: http://jsfiddle.net/4kb9R/144/jQuery插件錯誤對象的翻譯:有沒有方法「方法名」
我想這個插件能夠要麼作爲,過程中的插件,但也有一個公共方法可用稱爲init,基本上做同樣的事情。
我遇到的問題是,當我試圖通過公共初始化函數,我無法使用運行私有函數運行:
self = this;
//Start using the amountFormatter
this.init = function(elements) {
if(elements instanceof jQuery) {
//Check the value of each element and update it accordingly
elements.each(function() {
var $this = $(this);
var elementIsInput = $this.is("input");
value = $this.val() == "" ? $this.text().trim() : $this.val().trim();
value = (typeof value === 'undefined') ? '0' : value;
value = thousandSeperator(
convertNumber(roundingOfNumber(value, config.rounding))
);
//Checks whether we need to add the new amount as text or as a value
return elementIsInput === true ?
elem.val(addCurrencyToNumber(value)) :
elem.text(addCurrencyToNumber(value));
});
}
else {
if(elements.length !== 0) {
for (var i = 0; i < elements.length; i++) {
var value = elements[i];
//I get the error here, when I'm using self;
elements[i] = self.addCurrencyToNumber(
self.thousandSeperator(self.convertNumber(self.roundingOfNumber(value, config.rounding)))
);
}
return elements;
}
}
};
this.init(elem);
我這樣調用該函數:
var containerWithValue = $('.sf-insurance-amount');
var amountToTransform = containerWithValue.text();
var AmountsToFormat = ["4512.45", "784,687", "875943,5975"];
//Shows the original value...
$(".sf-insurance-amount-original").text("Original: " + amountToTransform);
// With options...
containerWithValue.amountFormatter({
culture: "en",
valuta: "euro",
rounding: 3
});
var amountFormatterData = containerWithValue.data('amountFormatter');
var newAmounts = amountFormatterData.init(AmountsToFormat);
console.log(newAmounts);
$.each(newAmounts, function(index, value) {
$(".sf-insurance-amount-provided ul li").eq(value-1).html(value);
});
任何人都有一個想法,這是爲什麼?我在這裏錯誤地使用了這個關鍵字嗎? 我很想爲此獲得解決方案。
始終包括相關的代碼和標記**的問題本身**,不只是鏈接(甚至沒有的jsfiddle)。小提琴是一個很好的*補充*,而不是替代品。 –
沒問題,調整。 –