将对象传递给事件jQuery

时间:2013-09-30 15:44:12

标签: javascript jquery

在这个例子中,我试图迭代传递给点击处理程序的对象的属性,但是我得到了意想不到的结果。 Here's小提琴

使用像

这样的JS脚本
 $(document).ready(function ()
        {

            Label = function (name, toDate, fromDate)
            {
                this.name = name;
                this.toDate = toDate;
                this.fromDate = fromDate;
            }

            lbl = new Label('John', 'Today', 'Yesterday');


            $('#btnSubmit').click(function ()
            {
                for (var i in lbl)
                {
                    console.log(i);
                }
            });
            $('#btnSubmit2').click(function (Label)
            {
                for (var i in Label)
                {
                    console.log(i);
                }
            });
        });

为什么我不能在click事件的函数中传递一个对象并迭代它的属性而不是像我在btnSubmit示例中那样使用forin循环?

1 个答案:

答案 0 :(得分:2)

始终使用event作为参数调用回调。当您编写click(function(Label){时,您只将该事件变量命名为Label(从而遮蔽您的外部构造函数)。

但是你可以访问外部作用域中定义的变量,所以你想要的可能是

var lbl = new Label('John', 'Today', 'Yesterday');
$('#btnSubmit').click(function(){
    for (var i in lbl) {
        console.log(i, lbl[i]); // for example "name", "John"
    }
});