我正在尝试将对象传入.on()函数,但我无法弄清楚如何做到这一点。
element_number = 1;
$('#button0').on('click', function () {
// how do I pass this object into the data parameter of the next .on function?
object = {
name: "abc",
number: element_number
};
$('#from-static').append(
'<button class="btn" >' + 'Element #' + element_number + '</button> <br/>');
element_number = element_number + 1;
});
// function to handle dynamically generated buttons
$(document).on('click', '.btn', data, function (event) {
// how do I get the object data from last function?
// show element number
alert(event.data.object.number);
});
答案 0 :(得分:3)
你可以这样做(例如:http://jsfiddle.net/5RgWh/7/):
element_number = 1;
$('#button0').on('click', function () {
// how do I pass this object into the data parameter of the next .on function?
object = {
name: "abc",
number: element_number
};
var jqBTN = $('<button class="btn" >' + 'Element #' + element_number + '</button> <br/>');
jqBTN.data("objectdata", object);
$('#from-static').append(jqBTN);
element_number = element_number + 1;
});
// function to handle dynamically generated buttons
$(document).on('click', '.btn', function (event) {
// how do I get the object data from last function?
var object = $(this).data("objectdata");
// show element number
alert(object.number);
});
将其保存在元素的jQuery数据存储中。
答案 1 :(得分:1)
您无法将数据传递给&#34; on&#34;函数,因为此函数仅注册回调。
您必须将数据保存在其他位置,并在事件发生时读取数据。
如果你真的渴望做到&#34;你的&#34;方式,你可以使用词法范围:
var aPerson = {
name: "Matthew",
age: 21
}
$('#button0').on('click', function () {
// how do I pass this object into the data parameter of the next .on function?
alert(aPerson.age); // works fine.
});