jquery.click not working=jquery.on(click…)工作正常
几周前,我正在进行我的项目,并编写了一些代码,以使表格行可点击(在那里,完成了)。 这段代码以前使用过,没有问题。我浪费了一天的时间试图让代码正常工作(尽管我以前做过多次)-我试图让它正常工作的一些事情是A-在所有事情上都将id更改为class,b-将代码从脚本部分的底部移动到顶部,c-重命名变量,d-在变量前面添加'var',从变量前面减去var,e-将所有单引号更改为双引号,将所有双引号更改为单引号,f-更改表名,g-尝试单击表而不是行,h-将表格放入div,从div中取出表格,等等 什么都没有成功,所以作为最后的手段,在深夜,我把.click切换到.on(点击-惊喜-一切都很好) 昨天也发生了同样的事情,但我没有做a-h,而是直接更改了。单击以打开(单击) 以下是两段代码片段:jquery.click not working=jquery.on(click…)工作正常,jquery,onclick,click,Jquery,Onclick,Click,几周前,我正在进行我的项目,并编写了一些代码,以使表格行可点击(在那里,完成了)。 这段代码以前使用过,没有问题。我浪费了一天的时间试图让代码正常工作(尽管我以前做过多次)-我试图让它正常工作的一些事情是A-在所有事情上都将id更改为class,b-将代码从脚本部分的底部移动到顶部,c-重命名变量,d-在变量前面添加'var',从变量前面减去var,e-将所有单引号更改为双引号,将所有双引号更改为单引号,f-更改表名,g-尝试单击表而不是行,h-将表格放入div,从div中取出表格,等等 什么都
上一个永远不起作用,下一个总是起作用(我时不时地对它们进行评论) 下面是另一个页面中的代码片段,它工作正常:
$("#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)直接相关,因此对我来说,如果一个可以工作,那么另一个应该可以工作
作为一名noob,我想成为一名更好的程序员,即使我的代码与.on(click)一起工作,我想知道为什么我的.click不起作用(一个智力练习)
因此,我的问题是:
再次感谢大家。单击会将单击事件绑定到
DOM
中当时存在的元素,而将委托事件并绑定稍后动态添加的单击(事件)
委托事件
委派事件的优点是,它们可以从中处理事件
以后添加到文档中的子元素。通过
选择一个元素,该元素保证在
已附加委派事件处理程序,您可以使用委派事件
避免频繁附加和删除事件处理程序
.click
会将click事件绑定到DOM
中当时存在的元素,而将委派事件并绑定稍后动态添加的click(事件)
委托事件
委派事件的优点是,它们可以从中处理事件
以后添加到文档中的子元素。通过
选择一个元素,该元素保证在
已附加委派事件处理程序,您可以使用委派事件
避免频繁附加和删除事件处理程序
阅读有关直接事件和委托事件的部分。@j08691我会说“是”,因为第一个事件不起作用。
$('foo')。单击(…)
相当于$('foo')。在('click,…)
。但是您使用了不同的选择器/元素将处理程序绑定到(\mdtable tr
在第一种情况下,在第二种情况下,文档
),因此它们在您的案例中并不等同。您正在使用jQuery学习中心中解释得很好的事件委派:。@broading-我很确定我知道答案,我只想从OP那里得到确认。@Kathiravan这显然是错误的。区别不在于click()
或on()
,这是事件是否被委派。on()
允许您创建直接和委派的事件,其中click()
只允许前者。请阅读有关直接和委派事件的部分。@j08691我会说是,因为第一个事件不起作用。$('foo')。单击(…)
相当于$('foo')。on('click,…)
。但是您正在使用不同的选择器/元素将处理程序绑定到(#在第一种情况下是mdtable tr
,在第二种情况下是document
),因此它们在您的案例中并不等同。您正在使用jQuery学习中心中解释得很好的事件委派:。@broading-我很确定我知道答案,我只想从OP那里得到确认。@Kathiravan这显然是错误的。区别不在于click()
或on()
,这是事件是否委派。on()
允许您创建直接和委派事件,其中单击()
只允许前者。更具体地说,在提供的代码中,上的将事件绑定到文档
。事件不会在以后添加。是的……这是我的问题……如上所述,加载DOM后通过单击和ajax调用加载不起作用的内容。非常感谢!更具体地说,在代码支持中plied,
上的正在将事件绑定到文档
。事件不会在以后添加。是的……这是我的问题……如上所述,加载DOM后通过单击和ajax调用加载不起作用的内容。非常感谢!
$(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"}
);
});