我剛剛開始編寫自己的插件,但在將jQuery對象存儲爲實例變量時遇到了一些困難。我的意思是,例如,下面的代碼:jQuery UI小工具 - 在實例變量中存儲jQuery對象
$.widget("ns.slider", {
options: {
"selector": "li",
"selected": 0,
"delay": 1000
},
_create: function() {
var slider= this;
this.element.addClass("slider");
this.container = $("<div class=\"slider-container\"></div>");
this.container.height($(this.element).height());
$(this.element).wrap(this.container).css({
"position": "absolute",
"top": 0,
"left": 0,
"right": 0
});
this.container.css({"position": "relative", "overflow": "hidden", "backgroundColor": "#CCC"}); // Problem line
this.container.remove(); // Also problem line
}
}
這兩條線我已經標記爲問題的線條不會出現執行 - 或者更確切地說,他們這樣做,但變化並不在頁面上可見。我期望看到背景顏色在第一行變灰,在第二行完全消失。它看起來像包裝函數實際上重複了元素,而重複的元素在對原始文件進行更改時保留了舊屬性。然而,我確信我在多年前使用過這個,並且它運行良好。
我使用jQuery 1.8.3和jQuery UI 1.10.4。在任何人說出來之前,我知道已經有一個jQuery UI滑塊 - 爲了保密性原因,我必須重命名該插件才能解決此問題。
我在這裏做錯了什麼?請讓我知道是否有任何其他信息我應該提供。提前致謝。
可能是被該DOM還沒有完成,當你調用加載?你有沒有嘗試設置一個超時,看看它是否有所作爲? – 2014-11-23 01:17:38
對插件的調用在$(document).ready()中。我可以看到'this.container'正在使用開發工具添加到DOM中,但是在this.container上調用的任何東西都不會對DOM元素產生任何影響。無論如何,我會嘗試調用超時。 – ClarkeyBoy 2014-11-23 01:19:47
不 - 沒有用。我試過:setTimeout(function(){ \t slider.container.effect(「highlight」,2000); },2000); – ClarkeyBoy 2014-11-23 01:22:33