0

大家好,我在动态创建表时声明了 id 和 class,如下所示我有 bing 使用许多函数来使我的点击事件运行,但一切正常,如果有人可以请帮助我?

这是我的带有 id 和类的动态表,我必须在“td”点击时调用 css,并且点击事件也应该被触发

   var tableid=0;               
    // display table.......
        $('#page').append("<center> <table id='tables'  cellspacing='50px' style='margin-top:70px' >");
        for(var j=0;j<row;j++){          
                $('#tables').append("<tr class='row' id='row"+j+"' style='margin-bottom:50px'>");
                        for(var k=0;k<5;k++){
                                if(tableid<tablecount-1){
                                        $("#row"+j).append("<td id='"+tableid+"' class='button' width='150' height='150' background='images/green.png' align='center'>"+
                                                            "</td>");   
                                        tableid++;
                                    }
                        }//for ends.                    
                        $('#tables').append("</tr'>");
        }//for ends
        $('#page').append("</center> </table>");

我想为所有 td 单独触发事件,单击时我想调用将我的 id 作为参数传递的函数;我为每个“td”使用唯一的 id,下面注释的代码是我试图实现/触发我的点击事件并调用我的 css 运行的方法,但一切都在脉络中,

/*Event.observe(window, 'load', function(){
            $('#TBL00001').observe('click', test());
            });             
            function test(){
                alert("click :)))");
            }
            $("'#"+tableCode[tableid]+"'").live(function() {
                    alert("Table"+tableCode[tableid]);
            });
            $("'#"+tableCode[tableid]+"'").click(function() {
                        alert("Table"+tableCode[tableid]);
            });

            $('#TBL00001').on( 'click', 'td', function() {
                        alert("Table"+tableCode[tableid]);});
            */

现在我也尝试了 .delegate() ,但我无法为每个 td 传递 id (唯一) all

                $('.button').each(function(){
                $(this).click(function{
                    alert("hi");
                });
           });


              $("tr .row > td .button").each(function() { 
            var $this = $(this);
            alert("hi"+$this);
        }

         /*$("table").delegate($(this),"click",function(){
            alert($(this));
            printBill(tabid);
        });
4

5 回答 5

1
$('table').delegate('tr.row > td', 'click', function() {
    id = $(this).attr('id');
}

我不确定我是否理解你的问题。

此代码将在每次 td 点击时执行,变量 id 将包含 td 的 id。

于 2012-06-21T07:09:45.030 回答
0

您应该使用 on 事件委托

$("table").on("click",function(e){
alert(jquery(e.target).attr('id');
})
于 2012-06-21T07:11:17.320 回答
0

你在萤火虫中看过 tr 的 ID 吗?

像这样分配,可能是错误的。

  id='"+tableid+"'

尝试这个。

id="+tableid+"

祝你好运..

于 2012-06-21T07:17:13.667 回答
0

在你的代码中有一个条件if(tableid<tablecount-1){很好,我认为你没有在tablecount任何地方拒绝,因此条件不起作用。

其次,如上所述,如果 td 可以通过以下方式获取每个ID :-

$('td').click(function(){
   var tdId = $(this).attr('id');
   console.log(tdId); // You would get the Id of clicked td in teh consloe and now you can  use the variable **tdId** for your function.
});
于 2012-06-21T07:17:36.427 回答
0

它在您创建表格的方法中。您应该以这样的方式创建表。

 $(function(){
var tableid=0;
var row = 5;

// display table.......
var theTable = $('<table />').attr('id', tableid);

for(var j = 0; j < row; j++){
    var theRow = $('<tr />').attr('id', 'row'+j).addClass('row');
    for(var k=0;k<5;k++){
        var theTd = $('<td />').addClass('button').html('test').click(function(){ alert('test') });
        theRow.append(theTd);
    }
    theTable.append(theRow);
}

$('#page').append(theTable);
    });
于 2012-06-21T08:56:40.313 回答