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);