请注意,这不是重复的: Event binding on dynamically created elements?
不久前,我正在努力使用Jquery动态事件绑定,但终于让它运行起来了。我使用的语法是:
$(document.body).on("change", "#registerF > input, #registerF > select", function () });
#registerF =
表单的ID。
input, select
=元素。
一切都运转正常,直到信不信由你,我决定用变量改变我网站中的所有链接,以便更好地移植。
当时:
http://example.com/path/to/file.php
成为:
var host = "http://example.com";
host + '/path/to/file.php';
突然我的jquery动态元素触发了,所以我看着它。
我已将其更改为:
$(document.body).on("change", "#registerF * ", function () {});
它的工作方式却很奇怪。
事件被触发,这就是它变得奇怪的地方:
$(document.body).on("change", "#registerF * ", function () {
var field_id = ($(this).attr("id")); <--- is defined
alert(field_id); <-------------------- display the id
var container = ['#' + field_id + "_ck", '#' + field_id + '_err'];
var data_type = ($(this).attr("data-type"));
var value = document.getElementById(field_id).value; <--- ERROR point here
alert(value) <----- display the good value as being defined
脚本正在运行。这些值被解释为它们应该在控制台中出现此错误
未捕获的TypeError:无法读取null
的属性“value”(匿名函数)@ Script.js:254
m.event.dispatch @ jquery.js:4670
r.handle @ jquery.js:4338
我的Jquery版本来自: https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js
已将其更改为1.12且仍然相同。
所以我在这里完全被吹了。如果值未定义,值将如何被发送!?
答案 0 :(得分:1)
你正在做很多额外的工作来获取id,将它传递给另一个dom搜索以再次查找该元素,然后在事件处理程序中已经有this
时搜索后获取值是元素
可以将其简化为
$(document.body).on("change", "#registerF :input ", function () {
alert(this.value);
});
我不知道你要创建数组container