0

我尝试使用以下代码从数组中绘制表格并从行中检索属性 id。任何建议将不胜感激。

$(document).ready(function(){

$.get('php/php.php', function(data){
    $.each(data, function(index, value){
    $('table').append(
        "<tr id='someid'>"
            +"<td>"+value.ticker+"</td>"
            +"<td>"+value.bid+"</td>"
        +"</tr>");
    }); 
}, "json");

$('tr').click(function(){
var id = $(this).attr("id");
alert(id);

}) 

}); 
4

3 回答 3

3

您将单击事件绑定到尚不存在的元素,因为它们是在异步回调中构造的。而不是使用click,使用on。由于您的表不是动态构造的,因此您可以将on处理程序附加到该表。

$('table').on('click', 'tr', function () {
    ...
});

http://api.jquery.com/on/

此外,您正在生成多个<tr>具有相同 ID 的 s;那不是有效的标记。

于 2012-07-30T12:58:20.097 回答
2

由于您将新内容动态注入 DOM,因此它不知道您绑定的 click 事件。所以你的点击事件将不起作用。

解决方案:使用 jQueryon

$(document).on("click","tr",function(){
  var id = $(this).attr("id");
  alert(id);
}) 

这个方法在jQuery 1.7+版本中可用。如果您使用的是旧版本,您可以考虑使用委托

从 jQuery 1.7 开始,.live()&.delegate()方法已被弃用。使用on方法。

于 2012-07-30T12:55:48.910 回答
0

一切都很好,但是您刚刚错过了 tr click 事件结束时的分号

$('tr').click(function(){
    var id = $(this).attr("id");
    alert(id);
});

如果 tr id 是唯一的,这将提醒 tr 的 id

确保在任何语法错误中都不允许执行 jquery 代码。

于 2012-07-30T13:01:57.517 回答