0

几周前,我正在研究我的项目并编写了一些代码来使表格行可点击(去过那里,做到了)。此代码以前使用过,没有问题。一天浪费了试图让代码工作(即使我之前已经做过多次) - 我试图让它工作的一些事情是-将所有内容的id 更改为 class,b - 从底部移动代码脚本部分到顶部,c - 重命名变量,d - 在变量前面添加 'var',从变量前面减去 var,e - 将所有单引号更改为双引号,将所有双引号更改为单引号,f - 更改表的名称,g- 尝试单击表格而不是行,h - 将表格放在 div 中,将表格从 div 中取出,等等等等。

没有什么是成功的,所以作为最后的手段,深夜,我将 .click 切换为 .on(click - 并惊喜 - 一切正常。

昨天发生了同样的事情,但我没有做a - h,而是直接将 .click 更改为 on(click.

下面是两个代码片段:

$("#mdtable tr").click(function() { 
    var localmdid = $(this).find("#mdid").html();
    alert("mdid =" + localmdid);
});

$(document).on('click', '#mdtable tr', function(e) {
    var localmdid = $(this).find("#mdid").html();
    alert("mdid =" + localmdid);
           });

上面的永远不工作,下面的总是有效(我评论他们)。

这是来自另一个页面的代码片段,它工作得很好:

$("#patienttable tr").click(function() {
       var passthis = $(this).find("#localid").html();
       $.post("php/setsessionvariable.php",
              {sessionval: passthis},
              function(e) {window.location.href = "root.php"}
              );
});

我已经阅读了 jQuery 文档,它说 .click 函数在某种程度上与 .on(click 直接相关,因此对我来说,如果一个有效,那么另一个应该有效。

作为一个菜鸟,我想成为一个更好的程序员,即使我的代码使用 .on(click,我想知道为什么我的 .clicks 不起作用(智力练习)。

所以我的问题是:

  1. .click 和 .on(click 真的相关吗?

  2. 点击代码段中是否有明显的我遗漏的东西使其无法正常工作?

  3. 关于这个问题有不同的方法吗?

再次,我提前谢谢你

4

1 回答 1

5

.click单击事件绑定到当时存在的元素,DOMon()将委托事件并绑定稍后动态添加的单击(事件)。

委托活动

委托事件的优点是它们可以处理来自以后添加到文档的后代元素的事件。通过选择一个在附加委托事件处理程序时保证存在的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序Reference

于 2013-07-16T13:56:45.657 回答