Jquery动态元素行为问题

时间:2016-01-24 03:22:02

标签: jquery ajax

  

请注意,这不是重复的:   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且仍然相同。

所以我在这里完全被吹了。如果值未定义,值将如何被发送!?

1 个答案:

答案 0 :(得分:1)

你正在做很多额外的工作来获取id,将它传递给另一个dom搜索以再次查找该元素,然后在事件处理程序中已经有this时搜索后获取值是元素

可以将其简化为

$(document.body).on("change", "#registerF :input ", function () {
   alert(this.value);    
});

我不知道你要创建数组container