我有一个拉入表单的脚本,我想在单击该按钮后执行单击操作,但是因为我通过脚本包含表单,我似乎无法获取jQuery服务器与它进行交互 - 也许是因为这是jQuery的工作方式,但有什么方法或解决方法,我可以在哪里获得一个click事件来处理通过脚本包含的表单元素?
JS
<script charset="utf-8" src="//js.hsforms.net/forms/current.js"></script>
我的JS
$(".actions input").click(function() {
$(".pop-up").hide();
$(".pop-up-thanks").show();
});
答案 0 :(得分:2)
您正在定位正在动态插入的元素,因此必须委派该事件。我们可以使用on()
方法委托它,该方法必须绑定到静态对象才能实现委派。我们可以将on()
绑定到(document)
,但建议使用更近的范围对象(例如$("#parent")
)来执行此操作。
$("#parent").on( "click", ".actions input", function() {
$(".pop-up").hide();
$(".pop-up-thanks").show();
});
bind()
,live()
和delegate()
是on()
的前身。目前,只有.live()
被弃用而不是on()
,而bind()
和delegate()
继续与on
共存 - 尽管{{1}是首选。
.bind()
method 从jQuery 1.7开始,.on()方法是首选方法 将事件处理程序附加到文档。
.delegate()
method 从jQuery 1.7开始,.delegate()已被.on()方法取代。 然而,对于早期版本,它仍然是最有效的手段 使用事件委托。
.live()
method 从jQuery 1.7开始,不推荐使用.live()方法。使用.on()来 附加事件处理程序。旧版jQuery的用户应该使用 .delegate()优先于.live()。