javascript知道你什么时候';重新单击表格行的第一个单元格
我有一个表格,以报表的形式显示表格数据。我试图做到这一点,当您单击行上的任意位置时,它将导航到该特定项目的更详细视图 HTML(来自PHP)javascript知道你什么时候';重新单击表格行的第一个单元格,javascript,Javascript,我有一个表格,以报表的形式显示表格数据。我试图做到这一点,当您单击行上的任意位置时,它将导航到该特定项目的更详细视图 HTML(来自PHP) ''。 ''. “a”。 “b”。 “c”。 '' Javascript function ViewItem(elThisRow, ItemNum) { // If first <td> was clicked, return // ? // Otherwise, navigate to item windo
''。
''.
“a”。
“b”。
“c”。
''
Javascript
function ViewItem(elThisRow, ItemNum)
{
// If first <td> was clicked, return
// ?
// Otherwise, navigate to item
window.location="/viewitem.php?i=" + ItemNum;
}
函数视图项(elThisRow,ItemNum)
{
//如果单击了第一个,则返回
// ?
//否则,导航到项目
window.location=“/viewitem.php?i=“+ItemNum;
}
单击和导航部分工作正常,但唯一的问题是,第一部分有一个复选框控件
因此,现在我无法真正使用复选框,因为当我单击它时,页面将导航到别处:(
有没有办法确定单击了哪个单元格,这样我就可以阻止它在第一个单元格中导航
谢谢你我不懂PHP,但是如果你想使用JQuery,应该会容易得多。
只需将单击事件绑定到每个td(列),然后根据列号决定要做什么。
事件
对象为您提供了一个srcElement
或target
属性(取决于您是否在IE上),这样您就可以看到单击了什么元素,从而忽略对输入元素的单击:
'<tr onClick="ViewItem(event, this, '.$ItemNum.')">'.
function ViewItem(e, elThisRow, ItemNum) {
if (!e) e = window.event;
var target = e.srcElement || e.target;
if (target.tagName.toUpperCase() === "INPUT")
return;
window.location="/viewitem.php?i=" + ItemNum;
}
''。
函数视图项(e、elThisRow、ItemNum){
如果(!e)e=window.event;
var target=e.src元素| | e.target;
if(target.tagName.toUpperCase()=“输入”)
返回;
window.location=“/viewitem.php?i=“+ItemNum;
}
演示:
有关使用IE和其他浏览器处理事件之间差异的更多信息:
(当然,像jQuery这样的库也可以为您提供跨浏览器功能。)即使使用jQuery,您仍然可以将单击绑定到行,但您需要检查事件对象的
target
属性,以查看是否是复选框被单击。为什么?我不能将单击绑定到?(我没有否决您的答案,但是)一般来说,减少事件处理程序会更有效。因此,是的,您当然可以绑定到每个td,但绑定到行“更干净”(您甚至可以只绑定到表,尽管我个人不这么认为)。我也没有否决您的答案,但显然有人否决了它以及我的问题:(哦,好吧……不能让每个人都满意:)哇,它像个符咒!谢谢!而且,我不知道“事件”的论点。那非常有用。
'<tr onClick="ViewItem(event, this, '.$ItemNum.')">'.
function ViewItem(e, elThisRow, ItemNum) {
if (!e) e = window.event;
var target = e.srcElement || e.target;
if (target.tagName.toUpperCase() === "INPUT")
return;
window.location="/viewitem.php?i=" + ItemNum;
}