我刚刚开始为我当前的项目学习 Jquery。我对 Jquery 对象的选择器和侦听器感到困惑。
$("input").change(function() {
alert( "Handler for .change() called." );
});
http://api.jquery.com/change/的这个精确副本......我将选择器从“.target”更改为“input”。
但是,没有一个输入元素由 change 事件处理。
我得到这个错误。我很确定有输入名称的元素
“未捕获的类型错误:无法读取空函数的属性‘更改’。js:378(匿名函数)”。
是逻辑有问题还是语法错误。我把错误缩小了这么多,但我仍然没有看到问题?
- - - 编辑 - - -
我测试答案,所有答案都是正确的。当事件处理程序/侦听器通过 jquery 选择器分配给元素时。
$("selectorStatement").EventHandlerShortCut(function() {
//Some code
});
当下面的代码执行时
$("input").change // Change handler for ALL INPUT elements
Jquery引擎获取所有输入元素(!!在那个时刻声明并存在的所有输入元素-执行的时刻处理程序-!!)
在那之后,如果生成了新元素,处理程序将无法识别。唯一可以防止这种情况发生的是使用 $(document).ready ,它将在创建整个文档后调用代码。正如@Henrik Peinar、@Chandrika Prajapati、@GZ、@Gaurav、@Mzn 在他们的回答中提到的......
除此之外,就我而言,
我通过使用生成一些输入
document.anElement.innerHTML = "<foo></foo>"
文件准备好后使用。这种情况可以有两种方法。
此 foo 元素可以在文档呈现时生成。通过使用
display:none
因此,当文档准备好时,jquery 引擎可以读取该元素。并且可以在出现时可见。
或者。
$("fooSelector").handlerType(...
当页面是动态的时,可以再次调用处理程序调用者。这是一个简单但糟糕的解决方案。