我试图得到一些元素的数据属性的时间定义,但是在创建对象时,该元素尚未加载(据我所知)。我的问题是什么是最好的(或任何)解决方案,因为我需要在两个不相互作用的独立函数中使用这个对象?元素不会在脚本执行
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