每个javascript对象的文字和jquery

时间:2012-01-08 21:15:25

标签: javascript jquery each literals

我正在尝试开始学习OO JS并且有一个简单的问题(我已经简化了我的实际问题)。

基本上,以下警告只返回[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>

非常感谢任何指导。

阿迪。

2 个答案:

答案 0 :(得分:0)

也许你可以这样做:

var Person = {
    alertNames: function() {
        $('#bob div').each(
            function(){
                alert($(this).text());
            }
        );
    };
}
Person.alertNames();

请注意,在以大写字母开头的JavaScript名称中(在这种情况下,Person)通常是为构造函数保留的(即用于创建新实例的函数)使用new关键字)。这些通常称为类型,因为名称会产生误导。

如果你想让你的代码真正面向对象,你可以试试这样的东西:

var Person = function(name) {
    var container = $('#' + name);

    this.alertNames: function() {
        $('div', container).each(
            function(){
                alert($(this).text());
            }
        );
    };
}
var bob = new Person('bob');
bob.alertNames();

推荐阅读:

答案 1 :(得分:0)

在javascript alert框中不是您返回的内容。这是你打电话的东西,它会弹出警报。因此,如果您需要3个警报,则需要调用alert函数3次。目前你只打电话一次。

我怀疑你正在尝试的是连接选择器的结果。在这种情况下,请使用.map代替.each

var Person = {
    name: $('#bob div').map(function() {
        return $(this).text();
    }).get().join(',')                  
};
alert(Person.name);

另一种可能性是将警报放在.each回调中。