Javascript Jquery选择器和事件侦听逻辑?

Javascript Jquery选择器和事件侦听逻辑?,javascript,jquery,event-handling,document-ready,dynamic-html,Javascript,Jquery,Event Handling,Document Ready,Dynamic Html,我刚刚开始为我当前的项目学习Jquery。我对Jquery对象的选择器和侦听器感到困惑 $("input").change(function() { alert( "Handler for .change() called." ); }); 这正是。。。我将选择器从“.target”更改为“input” 然而,并没有一个输入元素是由变更事件处理的 我得到这个错误。我很确定有输入名的元素 “未捕获的TypeError:无法读取空函数的属性'change

我刚刚开始为我当前的项目学习Jquery。我对Jquery对象的选择器和侦听器感到困惑

$("input").change(function() {
  alert( "Handler for .change() called." );
});
这正是。。。我将选择器从“.target”更改为“input”

然而,并没有一个输入元素是由变更事件处理的

我得到这个错误。我很确定有输入名的元素

“未捕获的TypeError:无法读取空函数的属性'change'。js:378 (匿名函数)”

是逻辑错误还是语法错误。我把错误缩小了这么多,但我还是看不出问题所在

------编辑------ 我测试答案,所有答案都是正确的。 当事件处理程序/侦听器通过jquery选择器分配给元素时

$("selectorStatement").EventHandlerShortCut(function() {
  //Some code
});
当执行下面的代码时

$("input").change // Change handler for ALL INPUT elements
Jquery引擎获取所有输入元素(!!声明并存在于该时刻的所有输入元素-执行的时刻处理程序-!!)

在那个时刻之后,若生成了新元素,那个么处理程序将不会识别它。唯一可以防止这种情况的方法是使用$(document).ready,它将在创建整个文档后调用代码。正如@Henrik Peinar、@Chandrika Prajapati、@G Z、@Gaurav、@Mzn在他们的回答中提到的那样

除此之外,, 就我而言

我通过使用

document.anElement.innerHTML = "<foo></foo>"
因此,当文档准备就绪时,jquery引擎可以读取元素。并且可以在消息到达时显示

或者


当页面处于动态状态时,可以再次调用处理程序调用方。这是一个简单但糟糕的解决方案。

听起来您的选择器没有返回结果(null)

要验证在标记就绪时调用此函数,请在文档完全加载时执行该语句

请尝试使用以下方法:

$(function () {

$("input").change(function() {
  alert( "Handler for .change() called." );
});


});
<script>
    $(document).ready(function(){
       //do "on document ready" things.

    });
</script>

$(function(){…})等同于$(document).ready(function(){…})

听起来您的选择器没有返回结果(null)

要验证在标记就绪时调用此函数,请在文档完全加载时执行该语句

请尝试使用以下方法:

$(function () {

$("input").change(function() {
  alert( "Handler for .change() called." );
});


});
<script>
    $(document).ready(function(){
       //do "on document ready" things.

    });
</script>

$(function(){…})等同于$(document).ready(function(){…})

听起来您的选择器没有返回结果(null)

要验证在标记就绪时调用此函数,请在文档完全加载时执行该语句

请尝试使用以下方法:

$(function () {

$("input").change(function() {
  alert( "Handler for .change() called." );
});


});
<script>
    $(document).ready(function(){
       //do "on document ready" things.

    });
</script>

$(function(){…})等同于$(document).ready(function(){…})

听起来您的选择器没有返回结果(null)

要验证在标记就绪时调用此函数,请在文档完全加载时执行该语句

请尝试使用以下方法:

$(function () {

$("input").change(function() {
  alert( "Handler for .change() called." );
});


});
<script>
    $(document).ready(function(){
       //do "on document ready" things.

    });
</script>

$(function(){…})等同于$(document).ready(function(){…})

如注释所示,请确保在DOM中已存在元素时调用此函数

操作步骤:

创建DOM元素

 <input type="text" />

下面是您代码中的JSFIDLE,正如注释中建议的那样。请确保在DOM中已经存在元素时调用此函数

操作步骤:

创建DOM元素

 <input type="text" />

下面是您代码中的JSFIDLE,正如注释中建议的那样。请确保在DOM中已经存在元素时调用此函数

操作步骤:

创建DOM元素

 <input type="text" />

下面是您代码中的JSFIDLE,正如注释中建议的那样。请确保在DOM中已经存在元素时调用此函数

操作步骤:

创建DOM元素

 <input type="text" />

这是您的代码中的JSFIDLE,我想您的注释应该在页面底部吗?(在输入元素声明之后)正确打开

$(“输入”)
将允许jQuery检查DOM(文档对象模型)并获取所有输入元素。您没有,因为DOM尚未构建。所以你的思路是正确的

一般做法是等到文件准备好。在jQuery中,这非常简单,您几乎可以在任何地方输入代码,如下所示:

<script>
$(function(){
    //do "on document ready" things.

});
</script>

$(函数(){
//做“准备好文档”的事情。
});
请注意,上面的代码是表达以下内容的奇特方式:

$(function () {

$("input").change(function() {
  alert( "Handler for .change() called." );
});


});
<script>
    $(document).ready(function(){
       //do "on document ready" things.

    });
</script>

$(文档).ready(函数(){
//做“准备好文档”的事情。
});

它们是相同的,只是第一行要写的字符更少。

我想你的评论
这些行应该在页面底部吗?(在输入元素声明之后)
正确打开

$(“输入”)
将允许jQuery检查DOM(文档对象模型)并获取所有输入元素。您没有,因为DOM尚未构建。所以你的思路是正确的

一般做法是等到文件准备好。在jQuery中,这非常简单,您几乎可以在任何地方输入代码,如下所示:

<script>
$(function(){
    //do "on document ready" things.

});
</script>

$(函数(){
//做“准备好文档”的事情。
});
请注意,上面的代码是表达以下内容的奇特方式:

$(function () {

$("input").change(function() {
  alert( "Handler for .change() called." );
});


});
<script>
    $(document).ready(function(){
       //do "on document ready" things.

    });
</script>

$(文档).ready(函数(){
//做“准备好文档”的事情。
});

它们是相同的,只是第一行要写的字符更少。

我想你的评论
这些行应该在页面底部吗?(在输入元素声明之后)
正确打开

$(“输入”)
将允许jQuery检查DOM(文档对象模型)并获取所有输入元素。您没有,因为DOM尚未构建。所以你的思路是正确的

一般做法是等到文件准备好。在jQuery中,这非常简单,您几乎可以在任何地方输入代码,如下所示:

<script>
$(function(){
    //do "on document ready" things.

});
</script>

$(函数(){
//做“准备好文档”的事情。
});
请注意,上面的代码是表达以下内容的奇特方式:

$(function () {

$("input").change(function() {
  alert( "Handler for .change() called." );
});


});
<script>
    $(document).ready(function(){
       //do "on document ready" things.

    });
</script>

$(文档).ready(函数(){
//做“准备好文档”的事情。
});
它们是身份证