【问题标题】:Jquery dynamic element behavior issuejQuery动态元素行为问题
【发布时间】:2016-01-24 03:22:01
【问题描述】:

请注意,这不是重复关闭: 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

脚本正在运行。这些值被解释为应有的值,但我在控制台中收到此错误


未捕获的类型错误:无法读取 null 的属性“值”

(匿名函数)@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 并且仍然相同。

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

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    您正在做很多额外的工作来获取 id,将其传递给另一个 dom 搜索以再次查找该元素,然后在事件处理程序中已经可以使用 this 并且是元素

    可以简化为

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

    我不知道你想做什么来创建数组container

    【讨论】:

    • 它们是接收答案的元素。将尝试使用 this.value
    • 谢谢先生! : 和 > 之间有什么区别?像 #id : element 和 #id > element
    • &gt; 仅表示孩子......不是所有后代。 :input 是表单控件的伪选择器api.jquery.com/category/selectors
    猜你喜欢
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多