2011-03-17 35 views
4

以下的傳遞對象到事件處理程序代碼傳遞一個對象到事件處理程序不工作:jQuery的:使用jQuery觸發方式

$('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提供的解決方案無法正常工作,因此發佈了新線程。

回答

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}]); 
+0

嘿盧克,thxs的答覆。我測試了你的代碼,沒有警報即將到來。請檢查一下。如果你給我一個展示如何將數組,對象和JSON傳遞給事件處理程序的例子,我將非常感激。 – Arjun 2011-03-17 06:45:54

+0

使用最新版本的jQuery(至少1.x),現在不能用.bind()替換.live()方法嗎? – 2014-04-04 20:32:52