如何将数据传递到jquery .on()函数

时间:2014-04-18 12:42:24

标签: jquery

我正在尝试将对象传入.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);

});

http://jsfiddle.net/waspinator/5RgWh/4/

2 个答案:

答案 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.
});