2012-03-27 152 views
0

我有问题,但我解决不了。

我的代码正在firefox完美工作

我有两个列表框:第一个包含国家,第二个包含城市。如果你改变国家,第二个列表框中的城市列表。

我jQuery代码:

$('#country').change(function(){ 

var sec=$('#country').val(); 

    $.post(
      'select.php?do=country', 
      {s:sec}, 
      function(answer){ 
       $('#city').html(answer); 
      } 
    ); 

}); 

当我改变了国家什么也没有发生在谷歌浏览器。

谢谢。

回答

4

是否所有这些代码都包含在$(document).ready()方法中?

Chrome比ffox分析得更快,因此change函数的绑定可能在DOM准备好之前发生。如果不使用DOM就绪功能,则编号为country的元素可能不会被浏览器呈现。

$(function() { 
// or $(document).ready(function() { 
    $('#country').change(function(){ 

    var sec=$('#country').val(); 

    $.post(
      'select.php?do=country', 
      {s:sec}, 
      function(answer){ 
       $('#city').html(answer); 
      } 
    ); 

    }); 

});

+0

我在jsfiddle中试过这个。如果你使用'no wrap(head)',它在FF和chrome中都不起作用。如果你使用'no wrap(body)',它可以在两个方面工作... http://jsfiddle.net/KpdXL/1/。如果没有OP的实际代码进行基准测试并知道正在使用哪种版本的Chrome/FF,很难说。 – mellamokb 2012-03-27 21:49:01

+0

yes是由$(document).ready()包装的,但在.change之前有许多函数。 ı现在清理他们的作品。 TY。 – bayburt 2012-03-27 21:55:02

+0

@bayburt:你之前在哪里得到错误?您可以使用Chrome中的控制台('CTRL + SHIFT + J')检查错误。 – mellamokb 2012-03-27 22:03:17

0

除了将代码封装在“onload函数”中,您可以将js放在文件的底部,这是为了页面性能的原因而提出的,它也正确地解析了脚本。