Jquery函数调用序列

Jquery函数调用序列,jquery,Jquery,我是Jquery的新手,在一本书中看到了这段代码。 我试图了解hideCode()是如何执行的 这是我对即将发生的事件顺序的理解: 文档被加载并准备好执行jquery函数 单击“猜测”框后,运行checkForCode()函数 函数运行 这是正确的吗 $(document).ready(function() { $(".guess_box").click(checkForCode); function getRandom(num) { var my_num = Math

我是Jquery的新手,在一本书中看到了这段代码。 我试图了解hideCode()是如何执行的

这是我对即将发生的事件顺序的理解:

  • 文档被加载并准备好执行jquery函数
  • 单击“猜测”框后,运行checkForCode()函数
  • 函数运行
  • 这是正确的吗

    $(document).ready(function() {
       $(".guess_box").click(checkForCode);
       function getRandom(num) {
           var my_num = Math.floor(Math.random() * num);
           return my_num;
       }
       var hideCode = function() {
           var numRand = getRandom(4);
           $(".guess_box").each(function(index, value) { 
               if(numRand == index){
                   $(this).append("<span id='has_discount'></span>");
                   return false;
               }
           });
       }
       hideCode();
       function checkForCode() {
           var discount;
           if($.contains(this, document.getElementById("has_discount"))) {
              var my_num = getRandom(5);
              discount = "<p>Your Discount is " + my_num + "%</p>";
           } else {
               discount = "<p>Sorry, no discount this time!</p>" ;
           }
           $(this).append(discount);
           $(".guess_box").each(function() {
               $(this).unbind('click');
           });
    
    $(文档).ready(函数(){
    $(“.guess_box”)。单击(checkForCode);
    函数getRandom(num){
    var my_num=Math.floor(Math.random()*num);
    返回我的号码;
    }
    var hideCode=函数(){
    var numRand=getRandom(4);
    $(“.guess_box”)。每个(函数(索引,值){
    if(numRand==索引){
    $(此)。追加(“”);
    返回false;
    }
    });
    }
    隐藏代码();
    函数checkForCode(){
    var贴现;
    if($.contains(这个document.getElementById(“has_折扣”)){
    var my_num=getRandom(5);
    折扣=“您的折扣是“+my_num+”%

    ”; }否则{ 折扣=“对不起,这次不打折!

    ”; } 美元(本)。追加(折扣); $(“.guess_box”)。每个(函数(){ $(this.unbind('click'); });
    除非我们没有看到更多的代码,否则当页面加载时,
    hideCode
    只被调用一次。
    checkForCode
    在单击
    guess\u框之前不会运行。顺序是:

  • 文档被加载
  • checkForCode
    绑定到
    guess\u box
    的单击事件,但它尚未运行
  • hideCode
    运行

  • IMHO,在中间行中添加alert/console.debug并查看它们的执行顺序。这将有助于您理解执行顺序。您的代码很难用1个空格缩进来阅读。我建议您使用4个空格。在单击之前调用hideCode。您能稍微修剪一下代码吗?我认为我们不需要所有这些信息。h将对document.ready调用ideCode,因为它不在任何其他函数中。$(this).append(“”);和$(this).append(折扣);为什么第一个append不可见,而第二个append可见。可能是因为其中没有任何内容。请尝试
    $(this).append(“这是一些文本”)
    相反。此外,如果guess_box元素少于5个,
    numRand==index
    可能永远不会为真。