在Widget Factory中對jQuery對象使用$ .extend時,IE8似乎在新創建的對象上丟失了jQuery上下文。讓我來證明一下。
下面的代碼工作在IE9 +,Chrome瀏覽器,火狐
$.widget("a07.Wooh", {
options: {
test: "Awesome"
},
_testFunc: function() {
// Perform some operations on the DOM using this.element jQuery Object
this.element.after("<div class=\"stuff\">Some cool stuff</div>").next().hide();
},
_testFunc2: function() {
//Copy the this.element object
this.element2 = $.extend({}, this.element);
//Perform some operations on the DOM using this.element2 jQuery Object
this.element2.next().css('color', 'red').show();
},
_create: function() {
this._testFunc();
this._testFunc2();
},
_init: function() {}
});
正如上面所提到的,此代碼工作正常,在所有主要的瀏覽器除了 IE8。基本上它返回和用於this.element2.next().css().show()
線錯誤消息:
對象不支持此屬性或方法
屬性/方法其參考是jQuery方法下(),CSS()並顯示()
它看起來好像在IE8中this.element2已經失去了它的jQuery上下文,因爲如果我把對象包裝在一個像這樣的jQuery函數:this.element2 = $(this.element2);
一切都很好。
所以現在的問題是,這是怎麼回事嗎?這是IE8的標準行爲還是我不正確地接近編程的情況?
'this.element2 = $ .extend({},this.element);' - 你在這裏有什麼打算? –
你的小提琴在我的IE8中工作。 –
如果它在你的IE8中有效,你可能會安裝Chrome Frame或處於某種第三維兼容模式?它在我的本地測試IE8和BrowserStack上的確切行上出現相同的錯誤時失敗。 – EasyCo