2013-07-01 137 views
0

好吧,我看了很多与我的看法不一样的例子。我只想做一些事情(现在,只是一个警报),当一个复选框更改(单击或任何其他)。我的代码: '复选框事件'不会触发

 $(document).ready( 
     function() { 
     $('input:checkbox').bind('change', function() { 
      var id = $(this).attr("id").substring(5); 
      var skill = $("#skill" + id).val(); 
     alert("you processed skill number " + skill); 
     }) 
     }) ; // end doc ready 
    
一件事,可能是与别人不同的是,我动态地创建这些复选框以包括这样的另一个脚本(不带“脚本”标签在这里):

<pre>src="jscript/skills_boxes.js" type="text/javascript" </pre> <br> 

目前上方。也就是说我的'问题',但我已经下面了,我的东西仍然无法正常工作。这里有什么时机问题吗?我会很感激任何帮助。谢谢。

回答

1

在函数上使用jquery。

$(document).ready( 
     function() { 
     $('body').on('change', 'input:checkbox', function() { 
      var id = $(this).attr("id").substring(5); 
      var skill = $("#skill" + id).val(); 
     alert("you processed skill number " + skill); 
     }) 
     }) ; // end doc ready 
+1

解释为OP ...当你“绑定”它只会绑定到当前在DOM中的元素的事件。因此,在此之后添加的任何内容都不会包含在内。 '.on'函数实际上绑定到一个公共父(在本例中为'body'元素),并监视从子元素中冒出的事件,而不管它们何时被添加。只要事件通过DOM向上传播,就应该抓住它。 (由于只有一个绑定,所以这也提供了性能改进,而不是每个匹配元素的绑定。) – David

+0

感谢您的建议。我将“$('body')。”on“行复制到我的代码中,但是当我点击这些复选框时,仍然没有发生事件。我正在Firebug中查看它,并且当我点击**时,它不会显示在该行。它会在页面加载时使它在那里。 – McAuley

+0

删除更改事件的内容并执行提醒,也许您遇到阻止其继续执行的错误。 – tmcc