以下代码将对象传递给事件处理程序不起作用:
$('a.another').live('click', function(e, data) {
alert(data); // **alerts '[{isMachineClick:true}]'**
alert(data.isMachineClick); // **alerts 'undefined'**
});
$('a.another').trigger('click', "[{isMachineClick:true}]");
Run Code Online (Sandbox Code Playgroud)
请看看这个.
PS:解决方案提供的链接通过jquery触发器传递一个对象不起作用,所以发布一个新的线程.
你只传递一个字符串,而且字符串中的JSON更像是一个数组,而不是一个对象.试试这个:
$('a.another').live('click', function(e, data) {
alert(data[0].isMachineClick);
});
$('a.another').trigger('click', [{isMachineClick:true}]);
Run Code Online (Sandbox Code Playgroud)
更新:没有意识到这是如何工作的:使用数组是正确的,每个额外的项目成为另一个参数.这是正确的代码:
$('a.another').live('click', function(e, data, data2) {
alert(data.isMachineClick);
alert(data2.someOtherThing);
});
$('a.another').trigger('click', [{isMachineClick:true}, {someOtherThing:false}]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5430 次 |
| 最近记录: |