2013-11-28 121 views
1

我正在閱讀.on()jquery文檔。jquery .on()通過函數傳遞數據

,並有可能通過一些數據是這樣的:

function greet(event) { 
alert("Hello " + event.data.name); 
} 
$("button").on("click", {name: "Karl"}, greet); 

的methos的原型是:

$(selector).on(event,childSelector,data,function,map) 

是否有可能有更復雜的薄而不只是一個字符串進入數據參數?

在我的情況下: 我將動態生成一些帶有數字輸入和一些文本的彈出窗口。

是否可以捕獲調用者彈出窗口中的信息,即調用者彈出窗口的編號和文本。 也許是這樣的:

$(document).on('click', '#id', 
var data =[ 
var number = functionThatGetTheNumberOfThePopup 
var test = captureTextOfPopup 
] , 
function(event){ 
//use number 
//use test 
}); 
+1

對沒錯,基本上任何你想要的。你試過了嗎?什麼地方出了錯? – giorgio

+0

是的,你可以傳遞任何數據,所以一個對象會好,但數據是靜態的,這意味着一旦它傳遞給事件處理程序,在事件處理程序外改變它不會影響它。您應該詳細解釋您是如何調用事件處理程序的,爲什麼以及您打算如何處理這些數據,並且您將更有可能獲得工作答案 – adeneo

回答

0

你例子通東西比一個「簡單的字符串」更復雜 - 你是例如通過與一個屬性name對象 - 我們沒有理由這不可能是一個具有2個(或更多)屬性的對象:

$(document).on('click', '#id', 
{ 
    number : functionThatGetTheNumberOfThePopup(), 
    test : captureTextOfPopup() 
} , 
function(event){ 
//use number 
//use test 
}); 
1

是的,您可以傳遞任意數據。你這樣做以對象的形式:

$(document).on('click', '#id', { 
     number: functionThatGetTheNumberOfThePopup, 
     test: captureTextOfPopup 
    }, 
    function(event){ 
    //use number 
    console.log(event.data.number); 
    //use test 
    console.log(event.data.test); 
});