我試圖得到一些元素的數據屬性的時間定義,但是在創建對象時,該元素尚未加載(據我所知)。我的問題是什麼是最好的(或任何)解決方案,因爲我需要在兩個不相互作用的獨立函數中使用這個對象?元素不會在腳本執行
function Data_Num_Array(){
this.data_num_array=$("*[data-num]");
}
Data_Num_Array.prototype.get_data_num_array_element=function(string_val){
var data_num_of_element;
for(var i=0;i<this.data_num_array.length;i++){
if(this.data_num_array[i].id===string_val){
data_num_of_element=$(this.data_num_array[i]).attr("data-num");
break;
}
}
return data_num_of_element;
};
function call_me(){
console.log(obj.get_data_num_array_element("div"));
}
如果在這裏有語法錯誤,這不是一個問題,這只是針對問題的情況。
var obj=new Data_Num_Array();
$(document).ready(function(){
console.log(obj.get_data_num_array_element("div"));
});
$("#click").click(function(){
console.log(obj.get_data_num_array_element("click"));
});
<html>
<head>
</head>
<body>
<div id="div" data-num="1"></div>
<button id="click" data-num="2"></button>
</body>
</html>
一個需要的Data_Num_Array對象的功能,需要到外面的$(document)。就緒,因爲它是被從其他來源調用,所以將在函數內部的$(document)。就緒不會因爲它的工作搜索該功能時會導致錯誤。我想我沒有在我的帖子中解釋。根據你的意見,我更喜歡camelCase,但我的一位同事不喜歡它,所以我一直試圖用更多的下劃線來編寫代碼。 – Cody
'call_me'是一個返回值函數嗎?如果是這樣,你必須將它的行爲包裝在'$(document).ready'中,並使用一個回調函數,當'call_me'實際上準備返回時調用它。如果'call_me'不是一個返回值函數,那麼你仍然可以將它包裝在'$(document).ready'中。 '$(document).ready'可以多次使用。那樣有用嗎? –
call_me()沒有返回語句。我已經嘗試將它包裝在$(document).ready中,但是接着調用控制檯返回的該函數不存在的那一行 – Cody