Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript对象文字和jquery_Javascript_Jquery_Each_Literals - Fatal编程技术网

javascript对象文字和jquery

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> <

我正试图开始学习OOJS,并且有一个快速的问题(为了方便起见,我浓缩了我的实际问题)

基本上,下面的警报只返回[Object Object],我希望它返回3个不同的警报框

<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();
建议阅读:

  • (书)
  • (第条)

在javascript
中,警告框不是您返回的内容。这是一个你可以调用的东西,它会弹出一个警报。因此,如果需要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,这很好。已更新答案,以将其考虑在内。