首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jQuery中使用$(‘document’).ready(.ready())?

如何在jQuery中使用$(‘document’).ready(.ready())?
EN

Stack Overflow用户
提问于 2010-10-22 05:24:03
回答 5查看 16.9K关注 0票数 5

我有一段代码可以在IE中正常工作,但它不能在Firefox中运行。我认为问题在于我还没能实现$('document').ready(function)。我的json的结构类似于{"options":"smart_exp"},{"options":"user_intf"},{"options":"blahblah"}。如果有人能看到我的代码并帮助我正确地实现它,我将非常感谢。下面是我的代码:

代码语言:javascript
复制
<html><head>
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2
     /jquery.min.js"></script>
     <script type="text/javascript" language="javascript">
     $(document).ready(function() { 
     $.getJSON("http://127.0.0.1/conn_mysql.php", function (jsonData) {
     $.each(jsonData, function (i, j) {
     document.form1.fruits.options[i] = new Option(j.options);
     });});
     });
     </script></head>
     <body><form name="form1">
     My favourite fruit is :
     <select name="fruits" id="fruits" /></form></body>
</html>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-10-22 05:27:00

只要运行$(document).ready(function() {doStuff})即可。这将在文档准备就绪时自动运行。

最好的做法是,至少在我看来,不要把任何事件放入html本身。通过这种方式,您可以将html文档的结构与其行为分开。而是在$(document).ready函数中附加事件。

代码语言:javascript
复制
<html>
  <head>
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
     <script type="text/javascript">
       $(document).ready(function() { 
           $.getJSON("http://localhost/conn_mysql.php", function (jsonData) {
             var selectElem = $('#fruits');

             for(var i = 0; i < jsonData.length; i++) { 
               selectElem.append($('<option>').html(jsonData[i].options));
             }

           });
       });
     </script>
  </head>
  <body>
    <form name="form1">
      My favourite fruit is :
      <select name="fruits" id="fruits" />
    </form>
  </body>
</html>

json EDIT:我使用以下代码进行了测试,并模拟了json对象,因为我自己不能进行该调用。

代码语言:javascript
复制
<html>
  <head>
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
     <script type="text/javascript">
       $(document).ready(function() {
           var jsonData = JSON.parse('[{"options":"smart_exp"},{"options":"user_intf"},{"options":"blahblah"}]');
           var selectElem = $('#fruits');

           for(var i = 0; i < jsonData.length; i++) { 
             selectElem.append($('<option>').html(jsonData[i].options));
           }

       });
     </script>
  </head>
  <body>
    <form name="form1">
      My favourite fruit is :
      <select name="fruits" id="fruits" />
    </form>
  </body>
</html>
票数 2
EN

Stack Overflow用户

发布于 2010-10-22 05:26:51

简短版本(由meeger建议):不要在文档两边使用单引号。

document是JavaScript附带的变量(至少在浏览器上下文中)。相反,尝试对相关行执行以下操作。

$(document).ready(function() {

您还需要从body标记中去掉onLoad属性,否则它将运行两次。

票数 4
EN

Stack Overflow用户

发布于 2010-10-22 05:40:53

这就是它的辉煌。速记,令人敬畏的版本:

已更新

代码语言:javascript
复制
<script type="text/javascript" language="javascript">
    $(function() { 
        $.getJSON("http://localhost/conn_mysql.php", function (jsonData) {
            var cacheFruits = $('#fruits'),
                cacheOption = $(document.createElement('option'));

            $.each(jsonData, function (i, j) {
                cacheFruits.append(
                    cacheOption.clone().attr('value', j.options).html(j.options)
                );
            });
        });
    });
</script>

当然,我不知道您的JSON结构是什么,所以您可能需要尝试一下代码的append部分。

上面的方法应该没有不起作用的理由。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3992075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档