Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中在同一个表上组合两个不同的onClick事件?_Javascript_Jquery_Html_Asp.net - Fatal编程技术网

Javascript 如何在jQuery中在同一个表上组合两个不同的onClick事件?

Javascript 如何在jQuery中在同一个表上组合两个不同的onClick事件?,javascript,jquery,html,asp.net,Javascript,Jquery,Html,Asp.net,我有以下表格结构: <table id='myTable'> <tr> <th class='sort' field='ticket_id'>Ticket Number</th> <th class='sort' field='insert_date'>Insert Date</th> </tr> <tr class='data_row' ticket_i

我有以下表格结构:

<table id='myTable'>
    <tr>
       <th class='sort' field='ticket_id'>Ticket Number</th>
       <th class='sort' field='insert_date'>Insert Date</th>
    </tr>
    <tr class='data_row' ticket_id='123'>
       <td>123</td>
       <td>12-Aug-2014</td>
    </tr>
    ...
    ... so many other rows that are generated by code behind
    ...
</table>
如果用户单击某个
元素,我还有以下代码来处理对表的排序

$(document).on('click','#myTable.sort',function(){

    var field_id = $(this).attr('field_id');
    sort_table_by_field(field_id);  //this will call a function to re-generate the table 
                                    // with a different ORDER BY 
});
问题是只触发了一个事件。
必须是特定的。 我认为这可能是因为我试图在一个
上同时听到一个
上的点击,这可能是不合理的,因为
包含在
中,所以我决定做以下事情来统一:

$(document).on('click','#myTable td',function(){
    var ticket_id = $(this).parent().attr('ticket_id');
    get_details_about_ticket(ticket_id);  
});

$(document).on('click','#myTable th',function(){
    var field_id = $(this).attr('field_id');
    sort_table_by_field(field_id);
});
但仍然只有
点击事件被触发


原因可能是什么?我如何触发这两个事件以执行不同的任务?

在元素上只触发一个函数如何?然后在触发的javascript函数中,获取元素类并包含逻辑以执行一个或多个函数

编辑:我制作了以下示例:

var myHandler = function () {
        if ($(this).is('td')) {
                console.log('found td');
        }
        if ($(this).is('th')) {
                console.log('found th');
        }
}
$(document).on('click', '#myTable td', myHandler);
$(document).on('click', '#myTable th', myHandler);

再次编辑以使示例与现有代码更相似。

'#myTable.sort'
-您需要在
#myTable
.sort
之间留出一个空格。sort更改所有
获取有关票证的详细信息(灌木丛id--->票证id)
@ChetanSastry在类之间是否放置空格并不重要。“无论如何,我都试过了,但没有成功。”马丁内斯特感谢你通知我打字错误,但这不是问题的原因。这是我复杂设计的简化原型1。th没有属性
field\u id
,但是
field
。更改您的单击函数:…$(this.attr('field_id'-->'field');2.我已对您的代码进行了修改,但已包含在
$(document).ready()
中。所有活动都有效!也许你将点击处理程序附加到了early。你能更具体一点吗?@Ahmad我添加了这个例子。也许这会给你一些想法
var myHandler = function () {
        if ($(this).is('td')) {
                console.log('found td');
        }
        if ($(this).is('th')) {
                console.log('found th');
        }
}
$(document).on('click', '#myTable td', myHandler);
$(document).on('click', '#myTable th', myHandler);