在jquery click事件中传递对象

时间:2014-04-24 18:05:21

标签: jquery

我错了,而且没有用。

我试图调用一个共享函数来警告从两个不同的点击事件调用的传递数据,但是我在警报中得到了定义。为什么我会被定义?

var myF = function(){
    alert('a click ' + this.model + ' ' + this.year); // meant to alert the properties of the object passed to it
    alert(this.ID); // meant to alert the ID of the click that called it
};

var myCar = new Object();
myCar.make = "Ford";
myCar.model = "Mustang";
myCar.year = 1969;

var myCar2 = mycar;
myCar2.make = "VW";
myCar2.model = "golf";
myCar2.year = 2000;


$('.feature1').click(myCar,myF);

$('.feature2').click(myCar2,myF);

3 个答案:

答案 0 :(得分:1)

在回调中,"这个"指的是您点击的元素。该函数将在事件参数中接收您的自定义对象。

你可以这样做:

$('.feature1').click({myModel: myCar}, myF);
    var myF = function(e){
    var data = e.data.myModel;
    alert('a click ' + data.model + ' ' + data.year);
};

答案 1 :(得分:1)

要访问事件处理程序中的数据,您必须使用event.data

var myF = function(e){
    alert('a click ' + e.data.model + ' ' + e.data.year); 
    alert(this.id);
};

此外,包含id的属性称为id,而不是ID。你有错误myCar2 = mycar而不是myCar2 = myCar

Demo

答案 2 :(得分:0)

您得到undefined,因为this变量是jquery锚点对象。在你的情况下会起作用的是

var myF = function(car){
alert('a click ' + car.model + ' ' + car.year); 
};

var myCar = new Object();
myCar.make = "Ford";
myCar.model = "Mustang";
myCar.year = 1969;

var myCar2 = new Object();
myCar2.make = "VW";
myCar2.model = "golf";
myCar2.year = 2000;


$('.feature1').click(function() { return myF(myCar); });    
$('.feature2').click(function() { return myF(myCar2); });

这不是最佳方式,但它会让它发挥作用。

http://jsfiddle.net/MWxG8/