1

例如我有如下动态内容

<table>
<tr>
    <td id='id_1' class='myclass'>1</td>
    <td id='id_2' class='myclass'>2</td>
    <td id='id_3' class='myclass'>3</td>

....我的功能是

$(body).on('click','.myclass', function() {
    console.log($(this).attr('id'));        
});

现在,当我单击 td 时,我得到一些整数,可以说 671 而不是我的 td 的 ID。

请建议我这样做的正确方法以及上面的代码有什么问题

4

5 回答 5

1

我不相信 $(body) 是有效的语法。尝试 $(document) ,它似乎工作得很好:jsfiddle working

$(document).on('click','.myclass', function() {
    alert($(this).attr('id'));        
});
于 2013-03-23T07:37:52.753 回答
1

尝试使用 $('body') 而不是 $(body)

于 2013-03-23T07:38:01.347 回答
0

尝试以下

$('body td').click(function() {
    console.log($(this).attr('id'));        
});
于 2013-03-23T07:39:09.497 回答
0

我检查了您的代码,除了上面提到的正文问题外,它似乎运行良好,因此您的问题必须与您动态添加项目的方式或您正在使用的 jQuery 版本有关。

这是适用于动态添加项目的代码,与您的非常相似。我将所选项目输出到 div 只是为了让它更明显。

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> </script>
<script>
    $(document).ready(function () {
      var counter = 1;
      window.setInterval(function() {
        $('tr').append("<td id='id_"+counter+"' class='myclass'>"+counter+"</td>");
        counter++;
      }, 3000);
      $('body').on('click','.myclass', function() {
        $('#selectedtd').html($(this).attr('id'));  
      });
    });
</script>
</head>
<body>
  <div id="selectedtd"></div>
  <table>
  <tr>
  </tr>
  </table>
</body>
</html>
于 2013-03-23T07:54:42.873 回答
0

您正在使用标签选择器 $(body),因此它应该用单引号或双引号括起来。否则随它去-

$(document).on('click','.myclass', function() {
    alert($(this).attr('id'));        
});
于 2013-03-23T08:23:29.383 回答