簡體   English   中英

第二次調用已定義的函數不起作用

[英]Second call to a defined function doesn't work

這是我第一次在這里發布信息,盡管我已經瀏覽了很長時間。 話雖如此,我希望不要違反任何法規等。無論如何,請注意:

我正在編寫這段jQuery代碼,其中用許多小div填充了包裝div,並創建了一個網格。 在一開始它一切都很好,我為此創建了一個函數,並且對其的第一個調用也很好。 但是,當我使用帶有click()事件處理程序的按鈕時,我想再次調用該函數,並使用不同大小的div重新填充網格-這是它停止工作的地方。 這是我的代碼:

 $(document).ready(function () {

      var size = 16;
      var def_width = 960;
      var def_height = 640;

      var populate = function (size) {
          $('.square').empty();
          for (var i = 0; i < size * size; i++) {
              var $sq = $("<div class='square'></div>");
              $('.wrapper').append($sq)
          };
          return $('.wrapper')
      };

      populate(size);

      $('.square').hover(function () {
          $(this).css('background-color', 'black');
      }, function () {
          $(this).css('background-color', 'white');
      });

      $('#reset').click(function () {
          var new_size = prompt('Please enter a new amount of squares');
          var new_width = def_width / new_size;
          var new_height = def_height / new_size;

          $('.square').css('width', new_width + 'px');
          $('.square').css('height', new_height + 'px');
          populate(new_size);
      });

對populate()函數的第二次調用似乎不起作用-網格仍然具有256個較小的正方形,因此它們無法完全填充網格。

您正在清空錯誤的元素,應該是$('.wrapper').empty(); 不是$('.square').empty();

如果清空正方形div,那么它將殺死正方形div中所有以空開頭的元素,但不會刪除它們。 然后,您可以添加更多的正方形。 如果在包裝器上運行為空,則它將刪除包裝器中所有先前存在的div,您可以添加新的div

  var populate = function (size) {
      $('.wrapper').empty();
      for (var i = 0; i < size * size; i++) {
          var $sq = $("<div class='square'></div>");
          $('.wrapper').append($sq)
      };
      return $('.wrapper')
  };

不知道為什么要在此函數中返回$('.wrapper') ,但是如果有其他代碼正在使用它,我會把它留在那里

好的,我給人的印象是empty()使用該選擇器刪除了所有元素。 因此,在將其更改為.square之后,它給了我一個完全空的包裝div。 以前,它更改了正方形的大小,以使它們不會填滿網格,而要購買它們仍在其中。 現在它是這樣的:我從一個16x16的div網格開始。 當用戶在側面輸入新的正方形量時,我需要更改它,例如為64x64。

我不確定是否還要返回包裝器,我補充說,當我仍在努力使該功能正常工作時。 它似乎有效,所以我把它留在那里。 一般而言,我是jQuery和JS的新手,因此可能還會出現其他錯誤,但是現在我需要關注預期的結果。 順便感謝您的快速解答!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM