jQuery绑定事件到动态创建元素的方法实例

在进入主题之前,让我们先看看首页常用的函数:单击页面输入框来自动选择文本。

很容易想到使用输入框的焦点事件,当输入框获得焦点时,jQuery的select()方法被称为。

好的,这个想法很简单,逻辑似乎是错误的,让我们看看现实是否可以实现。

1。页面构造一个表单并放置几个输入框。
复制代码代码如下所示:



名称:





年龄:





电话:





电子邮件:





出生:







界面的外观在铬中几乎相同:


2,然后开始编写Javascript代码,以实现复选框中文本的单击。根据前面的想法,应该是以下几点。
复制代码代码如下所示:

$(函数(){())
$(输入)。焦点(函数(){)
$(this);
})
})


三.然后到页面上试试看效果如何。经过一番尝试,它几乎成功了一半。是什么情况如果你现在写代码,你会发现当你点击输入框时,框中的文本会闪烁。此外,会发现只有当鼠标被按下时,输入框中的文本才保持在所选状态,我们希望。当松开时,选择效果消失。无尽的忧郁!


而这仅仅是在铬的情况下,在伊江更具有异国情调,一点点选择的效果是不开花。无视代码直接。



对于Firefox,水壶(如果你还不知道它的存在):Firefox的近亲,64高效版本的Firefox变种Mozilla官方认可,我一直无法计量。

下面是在谷歌之后直接在整个浏览器中找到的代码:
复制代码代码如下所示:

$(函数(){())
$(输入)。焦点(函数(){)
var输入= $(this);
setTimeout(){()函数(
Input.select();
});
})
})


而且上面的代码有一点魔力,这就是我和每个人都可能想到的。

复制代码代码如下所示:
var输入= $(this);
setTimeout(){()函数(
Input.select();
});


复制代码代码如下所示:
var输入= $(this);
setTimeout(){()函数(
$(this);
});

这两种文字应该是相同的代码,所以后者应该能够达到预期的效果,但事实上,第二次之后,效果就消失了!无法自动选择文本!

这是一般人无法理解的高度。

好的,回去看看我们的输入框是什么。现在只要输入框中有文字,它就会自动点击并解锁鼠标。



接下来,本文的真正主题是如何绑定功能或事件处理器,以动态创建页面元素。

上面的函数是这样说的,上面的代码可以解决表单页面的需要,只有在这个页面上,输入框在获得焦点后具有自动选择文本的功能。或者,在我们的代码中有绑定到输入框中的事件的处理器,当然,处理器是文本的选择。

如果上面的语句有点头晕,找不到北,我会用最直接的语言重复同样的想法:如果所有其他页面都有输入框,那么不是每个页面都写相同的代码来达到这个效果。

或者是在当前页面相同的时候,当用户填写相关信息时,我们可以动态生成一些输入框,而后一代的输入框如何获得焦点则选择了文本函数。

为了演示,我们发现,如果用户输入的名称,我们创建了一个输入框下面输入昵称。可以预见的是,在输入框,后来通过Javascript代码插入到DOM不为任何其他输入框具有相同的效果。因为我们让代码,文本自动选择执行加载页时,那是后来插入的输入框时不存在的页面加载。

下面是添加到名称输入框中的新添加的代码:
复制代码代码如下所示:
$(输入{名称= 'name' })。变化(函数(){)
弗斯特()。
Nick的名字:+
+
+
+
')
})

让我们进入页面并测试您想要做的事情。测试生成的输入框不会自动选择文本。



以下是获取动态创建元素以获得以前绑定的事件处理器的方法:
复制代码代码如下所示:
$(体),('focus',输入
var输入= $(this);
setTimeout(){()函数(
Input.select();
});
});

这是一个有点棘手,但我认为一个更好的方式来了解现在。因为jquery1.9实际上有一个活()函数前做这样的事情。它可以绑定事件处理程序在未来,非受造的元素,但后来,随着jQuery的版本升级,它不主张用活()方法,因为我们不主张,有其原因,我没有检查,就像之前我考虑检测为什么jQuery浏览器相关的功能取消。

如果我们将上述方法写入Web站点的主页面,就不需要在每个输入页面页面上编写相同的代码,但也适用于稍后动态创建的元素。

以上输入框示例仅用于演示。当然,它不限于这个示例,因此动态创建元素的需求非常普遍。至少我在项目中遇到过好几次,在不同的情况下。例如,在向用户显示页面权限时,有些需要禁用按钮,但是用户可以点击添加添加一行,而每行都要删除和修改按钮,然后禁用可以应用到按钮表中的新行中。

来吧,坐着看