以下代码将对象传递给事件处理程序不起作用:
$('a.another').live('click', function(e, data) {
alert(data); // **alerts '[{isMachineClick:true}]'**
alert(data.isMachineClick); // **alerts 'undefined'**
});
$('a.another').trigger('click', "[{isMachineClick:true}]");
请看一下。
PS:链接pass an object through jquery trigger提供的解决方案不起作用,因此发布新帖子。
答案 0 :(得分:6)
你只传递一个字符串,而且字符串中的JSON更像是一个数组,而不是一个对象。试试这个:
$('a.another').live('click', function(e, data) {
alert(data[0].isMachineClick);
});
$('a.another').trigger('click', [{isMachineClick:true}]);
UPDATE :没有意识到这是如何工作的:使用数组是正确的,并且每个附加项都成为另一个参数。这是正确的代码:
$('a.another').live('click', function(e, data, data2) {
alert(data.isMachineClick);
alert(data2.someOtherThing);
});
$('a.another').trigger('click', [{isMachineClick:true}, {someOtherThing:false}]);