試圖解決這個錯誤,這對我來說是有問題的......
基本上,我從一開始就定義一個變量作爲對象。該對象具有利用jQuery的功能,但是我需要在頁面加載期間設置對象的屬性(似乎我需要在jQuery文檔準備好之前設置它們)
不管怎樣,這裏是一個.js文件加載在頁面的頭部使用
var MyObject = {
Property1 : null,
Property2 : null,
Property3 : null,
Property4 : 0,
Initialize: function() {
// Do some code in here...
if ($('#some-element').length)
{
MyObject.Property1 = $('#some-element').data('property');
$('#some-element').click(MyObject.On_ClickProperty1);
}
},
On_Click_Property1: function() {
alert('You Clicked ' + MyObject.Property1);
if (MyObject.Property2 !== null)
alert('Property2 = ' + MyObject.Property2);
}
}
jQuery(document).ready(MyObject.Initialize);
這是一個很小的例子。但是現在我想在實際頁面的某個位置(在Body中)設置MyObject.Property2並更新它,並且應該可以正常工作,因爲Initialize
函數直到Document.Ready纔會真正運行。所以我把這樣的事情在文檔的身體......
<script>
MyObject.Property2 = 'This Is Property 2';
</script>
我現在得到的問題是一個頁面加載... TypeError: $ is not a function
現在,如果我換行.js文件用下面的代碼如下所示:
(function($){
var MyObject = {
Property1 : null,
Property2 : null,
Property3 : null,
Property4 : 0,
Initialize: function() {
// Do some code in here...
if ($('#some-element').length)
{
MyObject.Property1 = $('#some-element').data('property');
$('#some-element').click(MyObject.On_ClickProperty1);
}
},
On_Click_Property1: function() {
alert('You Clicked ' + MyObject.Property1);
if (MyObject.Property2 !== null)
alert('Property2 = ' + MyObject.Property2);
}
}
jQuery(document).ready(MyObject.Initialize);
})(jQuery);
我再也看不到這個錯誤,但是,MyObject.Property2
沒有被設置和Property2警報給空。
我怎樣才能做到這一點正常嗎?所以,我沒有得到$
類型錯誤,我仍然可以使用$
(NOT jQuery
物業職能範圍內),而我居然能之前MyObject.Property2的警報顯示了設置的Property2
的價值?
完整性檢查:是jQuery庫加載這段代碼運行的時間? (在控制檯中沒有404s等)。您的自定義.js文件應列在「
」部分中的jQuery庫之後。 –是的,custom.js文件在jquery.min.js文件加載後列出,全部在頭部。用於設置「MyObject.Property2」的內聯腳本位於body標籤內。第一種方法給出錯誤,但正確設置變量,而第二種方法不給出錯誤,但不設置變量。這裏哪種方法是正確的? –
這些都不是我想要的最終結果。這兩個只有我需要做的一半...沒有錯誤,並設置變量... –