在 HTML table 中附加行时 oncontextmenu 不起作用
oncontextmenu not working when append rows in HTML table
我正在从数据库中获取 70 条记录并将其加载到 html table 中,当用户从第 1 条记录向下滚动到第 70 条记录时,在滚动事件调用中获取下 70 条记录,例如 limit 70, 140 记录已提取并附加到已显示的记录。
这样我也可以通过添加 class 在所有行中使用右键单击或 oncontextmenu 功能。
当用户右键单击 table 的任何数据行时 on('contextmenu',function(){});事件在默认情况下获取的前 70 条记录中调用,但在滚动之后并附加前 70 条记录的下 70 条记录上未调用。
请帮我解决这个问题,为什么没有调用上下文菜单事件??
我的代码是。
//前 70 条记录默认显示在 table 行中,如
echo '<tr class="mute_ref_link_cls" id="' . $mm->msn . '_' . str_replace(array('_dup', '-dup'), '', $mm->name) . '_' . $mm->customer_id . '" onClick="mute_ctrl_fn(' . $mm->customer_id . ');openSubDiv(' . $mm->cid . ',' . $mm->customer_id . ',\'' . $mm->f_id . '\',\'' . $mm->msn . '\',\'info\',\'' . str_replace(array('_dup', '-dup'), '', $mm->name) . '\');">';
echo '<td class="muteClr with-tip" id="' . $mm->customer_id . '" title="' . $res . '"><a style="color:red" onClick="">' . str_replace('-dup', '', str_replace('_dup', '', $mm->name)) . '</a></td>';
echo '<td>';
echo ($mm->session_date_time > 0) ? date('d-M-Y H:i', strtotime($mm->session_date_time)) : 'N/A';
echo '</td>';
echo '</tr>';
**在滚动接下来的 70 条记录后获取并附加在第 70 条记录的末尾作为
echo '<tr class="mute_ref_link_cls" id="'.$mm->msn.'_'.str_replace(array('_dup','-dup'), '', $mm->name).'_'.$mm->customer_id.'" onClick="mute_ctrl_fn('.$mm->customer_id.');openSubDiv('.$mm->cid.','.$mm->customer_id.',\''.$mm->f_id.'\',\''.$mm->msn.'\',\'info\',\''.str_replace(array('_dup','-dup'), '', $mm->name).'\');">';
echo '<td class="muteClr with-tip" id="'.$mm->customer_id.'" title="'.$res.'"><a style="color:red" onClick="">'.str_replace('-dup', '', str_replace('_dup', '', $mm->name)).'</a></td>';
echo '<td>';
echo ($mm->session_date_time>0)?date('d-M-Y H:i', strtotime($mm->session_date_time)):'N/A';
echo '</td>';
echo '</tr>';
我的 jquery 右键单击任何前 70 条记录时的代码:
$('.mute_ref_link_cls').on('contextMenu', function (event, list)
{
$(this).trigger('click');
var str = this.id;
//getting msn and reference number as id on right click :: Ahmad Fraz
var dtz = str.split("_");
list.push({text: 'Add Reason', link: 'javascript:matchMMPinCodeForm(' + dtz[0] + ',' + dtz[1] + ',' + dtz[2] + ')', icon: 'blog'});
list.push({text: 'Cancel', link: 'javascript:pending(' + dtz[0] + ',' + dtz[1] + ',' + dtz[2] + ',\'nf503698\')', icon: 'delete'});
});
理想情况下,您应该使用事件委托对动态添加到 DOM 的元素进行事件绑定。
在你的情况下应该是:
$('table').on('contextMenu', '.mute_ref_link_cls', function (event, list)
{
$(this).trigger('click');
var str = this.id;
//getting msn and reference number as id on right click :: Ahmad Fraz
var dtz = str.split("_");
list.push({text: 'Add Reason', link: 'javascript:matchMMPinCodeForm(' + dtz[0] + ',' + dtz[1] + ',' + dtz[2] + ')', icon: 'blog'});
list.push({text: 'Cancel', link: 'javascript:pending(' + dtz[0] + ',' + dtz[1] + ',' + dtz[2] + ',\'nf503698\')', icon: 'delete'});
});
根据 jQuery 文档:http://api.jquery.com/on/
第一个参数是事件
第二个可选的是选择器
第三个可选的是处理程序的数据
最后一个是事件的处理程序。
很抱歉我在手持设备上回复时出现错别字/代码对齐问题。
我正在从数据库中获取 70 条记录并将其加载到 html table 中,当用户从第 1 条记录向下滚动到第 70 条记录时,在滚动事件调用中获取下 70 条记录,例如 limit 70, 140 记录已提取并附加到已显示的记录。 这样我也可以通过添加 class 在所有行中使用右键单击或 oncontextmenu 功能。 当用户右键单击 table 的任何数据行时 on('contextmenu',function(){});事件在默认情况下获取的前 70 条记录中调用,但在滚动之后并附加前 70 条记录的下 70 条记录上未调用。 请帮我解决这个问题,为什么没有调用上下文菜单事件?? 我的代码是。
//前 70 条记录默认显示在 table 行中,如
echo '<tr class="mute_ref_link_cls" id="' . $mm->msn . '_' . str_replace(array('_dup', '-dup'), '', $mm->name) . '_' . $mm->customer_id . '" onClick="mute_ctrl_fn(' . $mm->customer_id . ');openSubDiv(' . $mm->cid . ',' . $mm->customer_id . ',\'' . $mm->f_id . '\',\'' . $mm->msn . '\',\'info\',\'' . str_replace(array('_dup', '-dup'), '', $mm->name) . '\');">';
echo '<td class="muteClr with-tip" id="' . $mm->customer_id . '" title="' . $res . '"><a style="color:red" onClick="">' . str_replace('-dup', '', str_replace('_dup', '', $mm->name)) . '</a></td>';
echo '<td>';
echo ($mm->session_date_time > 0) ? date('d-M-Y H:i', strtotime($mm->session_date_time)) : 'N/A';
echo '</td>';
echo '</tr>';
**在滚动接下来的 70 条记录后获取并附加在第 70 条记录的末尾作为
echo '<tr class="mute_ref_link_cls" id="'.$mm->msn.'_'.str_replace(array('_dup','-dup'), '', $mm->name).'_'.$mm->customer_id.'" onClick="mute_ctrl_fn('.$mm->customer_id.');openSubDiv('.$mm->cid.','.$mm->customer_id.',\''.$mm->f_id.'\',\''.$mm->msn.'\',\'info\',\''.str_replace(array('_dup','-dup'), '', $mm->name).'\');">';
echo '<td class="muteClr with-tip" id="'.$mm->customer_id.'" title="'.$res.'"><a style="color:red" onClick="">'.str_replace('-dup', '', str_replace('_dup', '', $mm->name)).'</a></td>';
echo '<td>';
echo ($mm->session_date_time>0)?date('d-M-Y H:i', strtotime($mm->session_date_time)):'N/A';
echo '</td>';
echo '</tr>';
我的 jquery 右键单击任何前 70 条记录时的代码:
$('.mute_ref_link_cls').on('contextMenu', function (event, list)
{
$(this).trigger('click');
var str = this.id;
//getting msn and reference number as id on right click :: Ahmad Fraz
var dtz = str.split("_");
list.push({text: 'Add Reason', link: 'javascript:matchMMPinCodeForm(' + dtz[0] + ',' + dtz[1] + ',' + dtz[2] + ')', icon: 'blog'});
list.push({text: 'Cancel', link: 'javascript:pending(' + dtz[0] + ',' + dtz[1] + ',' + dtz[2] + ',\'nf503698\')', icon: 'delete'});
});
理想情况下,您应该使用事件委托对动态添加到 DOM 的元素进行事件绑定。
在你的情况下应该是:
$('table').on('contextMenu', '.mute_ref_link_cls', function (event, list)
{
$(this).trigger('click');
var str = this.id;
//getting msn and reference number as id on right click :: Ahmad Fraz
var dtz = str.split("_");
list.push({text: 'Add Reason', link: 'javascript:matchMMPinCodeForm(' + dtz[0] + ',' + dtz[1] + ',' + dtz[2] + ')', icon: 'blog'});
list.push({text: 'Cancel', link: 'javascript:pending(' + dtz[0] + ',' + dtz[1] + ',' + dtz[2] + ',\'nf503698\')', icon: 'delete'});
});
根据 jQuery 文档:http://api.jquery.com/on/
第一个参数是事件 第二个可选的是选择器 第三个可选的是处理程序的数据 最后一个是事件的处理程序。
很抱歉我在手持设备上回复时出现错别字/代码对齐问题。