这之间有什么技术差异:
$('#myid').keypress(function(e)
{
if(e.which == 13) {
alert('test');
}
});
和此:
$(document).on('keypress', '#myid', function(e) {
{
if(e.which == 13) {
alert('test');
}
});
我有一个jQuery脚本,它运行第二个例子,但没有第一个
答案 0 :(得分:1)
他们正在使用两个完全不同的事件。第一个使用keypress
事件:
$('#myid').keypress(function(e)
而第二个使用click
事件:
$(document).on('click', '#myid', function(e) {
除此之外,第一个是直接绑定到#myid
元素,而第二个绑定到document
并基于#myid
选择器过滤事件。由此产生的这两种结合的观察效果可能是相同的,但它们以非常不同的方式实现了这种效果。
我有一个Jquery脚本,该脚本使用第二个示例运行,但不使用第一个
这不太可能,因为点击事件的.which
属性不等于13
。虽然这取决于你的意思"运行"。你可能正在观察与你所描述的完全不同的东西。例如,这两种类型的绑定之间的关键区别在于第二种绑定用于从动态添加的DOM元素中捕获事件。因此,如果您尝试在通过AJAX加载的DOM元素上使用第一个示例,那么在附加事件处理程序时它将无法找到这些元素。
答案 1 :(得分:0)
这里有两件事情,所以我会相应地分开答案。
<强> 1。关于代码中的事件绑定:
$('#myid').keypress(function(e){//...});
将keypress事件绑定到id为myid
的HTML元素。因此,在所述元素内发生的任何按键事件,例如焦点,制表符等;它们都将由按键功能处理。
$(document).on('click', '#myid', function(e) { //... });
将单击事件处理程序绑定到整个文档(网站),以及ID为myid
的HTML元素。这是on
函数的能力,我将在下面进一步描述。
如果您计划将一个或多个事件绑定到一个或多个HTML元素,则on
事件处理程序非常有用。我喜欢在执行Chaining时使用它,因为它可以在语法上和效率上都比一次编写一个事件处理程序更好。
<强> 2。关于事件处理程序:
on
和keypress
之间的区别在于keypress是事件处理程序的快捷方式:
on('keypress', function(e){//...});
当它归结为它的作用时,意味着它是一回事。
而on通常用于附加事件处理程序。例如click事件处理程序:
on('click', function(e){//...});
以及按键事件处理程序:
on('keypress', function(e){//...});
。
... and many others。
jQuery中的文档非常清楚地确定了这些函数的工作原理,因此如果您在阅读了此处链接的文档后还有其他问题,请随时提出: - )