jQuery change()和bind("更改")不起作用

时间:2012-09-01 04:19:22

标签: javascript jquery html ajax dom

这个问题已经被问到了,但我最基本的问题仍然存在。除了select标签并试图通过jquery捕获更改事件,我没有向我的html添加任何内容。这是我的代码:

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script>
  $('#target').bind("change", function{
    alert('Changed');
  });
</script>
</head>
<body>
<form>
  <select id="target">
    <option value="option1" selected="selected">Option 1</option>
    <option value="option2">Option 2</option>
  </select>
</form>
</body>

即使是change()函数也不起作用。

<script>
  $('#target').change(function() {
    alert('Changed');
  });
</script>

请帮我弄清楚我做错了什么。在Stackoverflow上的一个类似问题中,我得到http://jsfiddle.net/78x9Q/4/作为答案。但即使是该代码的精确复制粘贴也不适用于我。

P.S。:jQuery正在加载,因为我测试了它,并发现使用它:

<script>
$(function() {
  alert('Changed');
});
</script>

4 个答案:

答案 0 :(得分:6)

您的代码无效,因为您尚未构建dom时尝试使用dom。使用此:

$(document).ready(function () {
  // your code
});

然后你的代码将在dom已经构建时运行。

答案 1 :(得分:4)

此:

<script>
  $('#target').change(function() {
    alert('Changed');
  });
</script>

应该是这样的:

<script>
  $(function () {
    $('#target').change(function() {
      alert('Changed');
    });
  });
</script>

意味着您在文档准备好之前正在执行绑定。

答案 2 :(得分:3)

像这样使用

$(document).ready(function () {
   $('#target').change(function() {
     alert('Changed');
   });
});

答案 3 :(得分:2)

您需要将jquery代码包装在document ready事件