28

所以我正在使用 Javascript 和 jQuery 创建一个表,我希望它在您单击表第一行上的 td 时,然后该列中的其余 td 下拉。让我尝试通过显示我的代码来解释它。这是我的Javascript:

function createTr (heights) { //heights is just an array of words
    for (var h=0; h<heights.length; h++) { 
        var theTr = $("<tr>", { id: "rowNumber" + h});
        for (var i=0; i<heights.length-3; i++) { 
            theTr.append($("<td>", { "class": "row"+h + " column"+i,
                                     html: heights[h][i]
                                   }));
        }
        $('#newTable').append(theTr); // append <tr id='rowNumber0'> to the table (#newTable), which is written in the html
    }
}

这基本上创建了 td,每个 td 都类似于这种格式

<td class="rowh columni">

我希望它隐藏除 .row0 中的 td 之外的所有 td,如果单击 .row0 .columni 中的 td,则 .columni 中的所有 td 都会出现。参数'heights'就是一个数组,例如,它可以是

var heights = [['headerOne', 'headerTwo'], ['someTd', 'anotherTd'],];

它会使用这些词创建一个表, headerOne 和 headerTwo 将在第一行, someTd 和 anotherTd 将在第二行。

现在,当我尝试像这样添加点击功能时

function animation() {
    $('td').click( function() {
        alert('clicked');
    });
}

然后像这样在我的 document.ready 函数中调用它

$(document).ready( function() {

    createTr(heights);
    animation();
});

当我单击 td 时,它什么也没做。怎么来的?

4

6 回答 6

52

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

由于您是在创建 DOM 之后创建元素。使用“on”选择器获取动态创建的精确元素。

从网址:

   $("#newTable").on("click", "td", function() {
     alert($( this ).text());
   });
于 2013-10-28T17:27:15.217 回答
6

试试这样:

$('body').on('click','td', function() {
        alert('clicked');
    });
于 2013-10-28T17:31:40.823 回答
2

尝试这个

function animation() {
    $(document).on('click','td',function() {
    alert('clicked');
    });
}
于 2013-10-28T18:01:44.850 回答
2

我喜欢这个。-

 $("#table tr").click(function(){
    console.log(this);
});
于 2017-10-08T14:16:33.650 回答
1

这段代码工作得很好:

$(document).ready(function(){
    $("td").click(function(){
        if(this.title!=""){
            alert(this.title);
        }
    });
});
于 2016-05-08T16:21:45.220 回答
0

使用它来捕获 spesifc tr 和 td 的点击事件;

$('#table_id').on('click', 'tr.statusP td:first-child', function () {
                    alert('clicked');
                });
于 2019-12-27T09:22:57.040 回答