Javascript Jquery函数触发

Javascript Jquery函数触发,javascript,jquery,Javascript,Jquery,一个简单的问题真的。。有人能解释一下为什么第一个例子有效,而第二个却不行 $(function() { $("#select_one").change(function() { alert('efjwelf'); }); }); ###示例2 $("#select_one").change(function() { alert('efjwelf'); }); 提前感谢在第二个示例中,您绑定到

一个简单的问题真的。。有人能解释一下为什么第一个例子有效,而第二个却不行

   $(function()
   {  
      $("#select_one").change(function() 
      {
         alert('efjwelf');
      });
   });
###示例2

  $("#select_one").change(function() 
  {
     alert('efjwelf');
  });

提前感谢

在第二个示例中,您绑定到的元素(
#select_one
)还不存在,因此事件侦听器不会绑定到任何东西

调用
bind
(或
change
,或其他快捷方式方法)时,事件侦听器仅附加到选择器当时匹配的元素。以后添加的图元不会附着。为了解决这个问题,我们使用了以下方法:

  • -这确保文档在附加事件之前准备就绪
  • -这会将侦听器连接到与选择器匹配的所有元素,无论是现在还是将来
  • -这会将侦听器连接到与选择器匹配的所有元素和根元素,无论是现在还是将来

这是DOM何时准备好/加载的问题。

因为在DOM完全加载之前,
\select\u one
对象不存在
$function(){…})
$(document)的简写。ready(function(){…})
如果在执行两个脚本时都存在id为“select_one”的元素,那么它们都会工作。

在第二个脚本上,您尝试附加事件处理程序的元素还不可用

选中此项:


我真的建议你阅读官方文件。这方面有大量的资源。这就是为什么我不喜欢语法
$(function()
),我更喜欢功能上等价的
$(document.ready())
因为对于不是jQuery专家的人来说,它更能自我描述。@jfriend00-
$
是一个可怕的函数,它的名字毫无意义,它做的事情完全不同,这取决于你传递的是一个包含CSS选择器的字符串、一个HTMLElementNode、一个包含HTML的字符串还是一个函数。@jfriend-这很好我犯了很多错误。我没有意识到其中一个是另一个的别名。我在四处搜索时也在努力描述这个问题。现在看起来很简单。lol@Quentin-这就是jQuery。你要么学习它,要么使用不同的库。
$
根据你传递的内容,它会严重超载。很多jQuery函数也是如此选项。
x.html()
返回innerHTML,并设置innerHTML。YUI使用更传统的
x.getContent()
x.setContent(“foo”)
。它们就是它们。您可以学习它的工作原理并调整或选择适合您风格的库。
All three of the following syntaxes are equivalent:
$(document).ready(handler)
$().ready(handler) (this is not recommended)
$(handler)