javascript对象文字和jquery
我正试图开始学习OOJS,并且有一个快速的问题(为了方便起见,我浓缩了我的实际问题) 基本上,下面的警报只返回[Object Object],我希望它返回3个不同的警报框javascript对象文字和jquery,javascript,jquery,each,literals,Javascript,Jquery,Each,Literals,我正试图开始学习OOJS,并且有一个快速的问题(为了方便起见,我浓缩了我的实际问题) 基本上,下面的警报只返回[Object Object],我希望它返回3个不同的警报框 <body> <div id="bob"> <div>f</div> <div>t</div> <div>q</div> </div> <
<body>
<div id="bob">
<div>f</div>
<div>t</div>
<div>q</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
var Person = {
name: $('#bob div').each(
function(){
$(this).text();
}
)
}
alert(Person.name);
});
</script>
</body>
F
T
Q
$(文档).ready(函数(){
个人变量={
姓名:$('bob div')。每个(
函数(){
$(this.text();
}
)
}
警报(个人名称);
});
非常感谢您的指导
Adi.也许你可以这样做:
var Person = {
alertNames: function() {
$('#bob div').each(
function(){
alert($(this).text());
}
);
};
}
Person.alertNames();
var Person = function(name) {
var container = $('#' + name);
this.alertNames: function() {
$('div', container).each(
function(){
alert($(this).text());
}
);
};
}
var bob = new Person('bob');
bob.alertNames();
但是请注意,在JavaScript中,以大写字母开头的名称(在本例中,Person
)通常是为构造函数函数保留的(即使用new
关键字创建新实例的函数)。这些类型通常被称为类型,因为类的名称会产生误导
如果您想让代码真正面向对象,可以尝试以下方法:
var Person = {
alertNames: function() {
$('#bob div').each(
function(){
alert($(this).text());
}
);
};
}
Person.alertNames();
var Person = function(name) {
var container = $('#' + name);
this.alertNames: function() {
$('div', container).each(
function(){
alert($(this).text());
}
);
};
}
var bob = new Person('bob');
bob.alertNames();
建议阅读:
- (书)
- (第条)
中,警告框不是您返回的内容。这是一个你可以调用的东西,它会弹出一个警报。因此,如果需要3个警报,则需要调用警报
功能3次。目前您只调用它一次
我怀疑您正在尝试连接选择器的结果。在这种情况下,请使用.map
而不是。每个:
var Person = {
name: $('#bob div').map(function() {
return $(this).text();
}).get().join(',')
};
alert(Person.name);
另一种可能是将警报放在.each
回调中。您的代码将为$('#bob div').each(…)
分配返回值给Person.name
,这是一个jQuery对象。如果您想连接内容,还必须添加.get().join()
@FelixKling,这很好。已更新答案,以将其考虑在内。