使用jQuery动态创建onClick事件处理程序

时间:2014-04-06 10:02:50

标签: javascript jquery

我有以下代码,它从数组中构建一个名为'data'的表。我想将javascript调用添加到我的另一个名为backend_getMovieData的方法中,但我不知道如何从movie._id构建一个字符串。我从我的示例代码中收到错误“Uncaught SyntaxError:Unexpected token}”。

data.forEach(function(movie) {
    $("#shows").find('tbody')
           .append($('<tr>') 
           .append($('<td>' + movie._id + '</td>'))
           .append($('<td>' + movie.total + ' times</td>'))
           .append($('<td><button class=\'btn btn-success\' onClick=backend_getMovieData(' + movie._id + ');>Show times</button></td>'))); 
});

2 个答案:

答案 0 :(得分:2)

我认为,你的函数正在期待一个字符串。

这样做:

data.forEach(function(movie) {
    $("#shows").find('tbody')
           .append($('<tr>') <br />
           .append($('<td>' + movie._id + '</td>'))<br />
           .append($('<td>' + movie.total + ' times</td>'))<br />
           .append($('<td><button class=\'btn btn-success\' onClick="backend_getMovieData(\'' + movie._id + '\')";>Show times</button></td>'))); 
});

你需要用引号包装它。

答案 1 :(得分:1)

JQuery可以通过更精细的方式完成它:

$("#shows").on('click', 'button.btn-success', function() { backend_getMovieData(this.id) });

data.forEach(function(movie) {
    $("#shows").find('tbody')
       .append($('<tr>') <br />
       .append($('<td>' + movie._id + '</td>'))<br />
       .append($('<td>' + movie.total + ' times</td>'))<br />
       .append($('<td><button class="btn btn-success" id="' + movie._id + '">Show times</button></td>'))); 
});
相关问题