on()不使用jQuery处理实时数据,怎么做?

时间:2013-03-02 22:20:10

标签: jquery-mobile onclick jquery jquery-on

我有一些动态数据被附加到列表中,并且该数据中的任何链接似乎都不起作用。

我正在使用jquery 1.8.3而on()应考虑live方法,我认为

setInterval(function () {
    getNot();
}, 2000);

function getNot() {
    var data = {
        t1: 'test1',
        t2: 'test2',
        t3: 'test3'
    };
    var size = 0,
        li = '';
    $.each(data, function (k, v) {
        li += '<li>' +
            '<a href="#" class="add" data-listid="' + k + '">' +
            '<h2>load data - ' + k + '</h2>' +
            '</a>' +
            '</li>';
        size++;
    });

    var but = $('#not'),
        ul = $('#not_ul');

    but.find('span').text(size + ' Notifications');
    ul.html(li);
    ul.listview().listview("refresh");
}

// this doesn't seem to work
$('.add').on("click", function () {
    var listId = $(this).data('listid');
    console.log(listId);
    return false;
});

see full example here

关于这个问题的任何想法?

1 个答案:

答案 0 :(得分:3)

$('.add').on("click", function () {

您需要传递选择器才能使on生成委托事件

$('#{containerId}').on("click", '.add', function () {
    var listId = $(this).data('listid');
    console.log(listId);
    return false;
});

containerId应该是动态创建的.add元素中最接近的静态元素。