我只是对我发现的这个JS感到好奇

时间:2015-01-22 07:31:00

标签: javascript jquery hashtag

我在某个地方找到了这个Javascript,想要学习。因此,我只会就我不知道的事情提出问题。

1)我想知道为什么有一个构建器变量的hashtag。

 (function($) {
$(document).ready(function() {
  'use strict';
   var builder = $('#builder');

2)似乎那里写下的建设者已经与#builder ...

有关
 /**
    * Gets the json for the form in the embedded builder.
    *
    * @return string the form's json.
    */
 var getFormDocument = function() {
     if (document.getElementById('builder').contentWindow.getFormDocument == null) {
        return '{}';
     }

     return document.getElementById('builder').contentWindow.getFormDocument();
   };

3)同样,这里是一个哈希标签。它来自css吗?

     /**
        * Adjusts the builder's height to the window.
        */

   var resizer = function() {
     var w = $(window).height(),
       h = $('header').height(),
       t = $('#top-row').height(),
       p = 12, // top padding
       o = (w - h - t - p) + 'px';

      builder.css('height', o);
  };

4).js-form-document是JQuery函数之一吗?

/**
   * Called when the user is done building their form.
   */
  var clickedSave = false;
  var save = function() {
      clickedSave = true;
      jQuery('.js-form-document').val(getFormDocument());
      jQuery('#builderModal_signup').reveal();

  };

5)为什么有TODO说iframe会疯狂?在用户保存表单后,这个js代码如何连接到数据库?

/**
   * Adds listeners for the embedded builder and keeps the
   * builder properly positioned.
   */
  var init = function() {

    // TODO: iframe width at 100% goes bonkers.
    var width  = $($('div.twelve.columns')[0]).width();
    builder.css('display', 'block');
    builder.css('width', width + 'px');

    $('.js-save').click(save);
  };



 var hasFields = function() {
    var formDocument = JSON.parse(getFormDocument());
    if (formDocument.fields == null) {
      return false;
    }

    var sections = formDocument.fields;

    if (sections.length === 0 || sections[0].fields.length === 0) {
        return false;
    } else {
        return true;
    }
  };

6)不要得到哈希标签的含义......

/*
   * Triggers a call to action for the user
   */
  var firstCallout = function() {
    if (clickedSave) {
      return;
    }

    if (!hasFields()) {
        jQuery('#builderModal_noFields').reveal();
    } else {
        jQuery('#builderModal_hasFields').reveal();
    }
  };


 init();

  setTimeout(function(){firstCallout();}, 30000);
  setInterval(function() {
      var onClass = $('.js-save').attr('data-on-class');
      if (onClass === '') {
        onClass = 'green';
      }

      if (hasFields()) {
        $('.js-save').removeClass('gray').addClass(onClass);
      } else {
        $('.js-save').removeClass(onClass).addClass('gray');
      }
  }, 1000); 

});
})(jQuery);

var lastHeight = 0;
function resizeBuilder() {
  setInterval(function() {
    var iframe = document.getElementById('builder');
    var padding = 20;
    var height = iframe.contentWindow.document.body.scrollHeight;

    //chrome counts padding in scroll height and creates never ending height
    if (Math.abs(height - lastHeight) <= padding) {
        return;
    }

    height += padding;

    if (height < 400) {
        height = 400;
    }

    iframe.height = height + 'px';
    lastHeight = height;
  }, 1000);
}

2 个答案:

答案 0 :(得分:0)

嗯,显然你缺乏 jQuery 的基本知识。 哈希代表DOM元素ID&#39;选择器和点代表类选择器。 关于&#34; TODO&#34; - 在他有足够的iframe之后,这看起来就像开发者的评论。为什么它100%疯狂?没有头绪。

表单由客户端脚本与之通信的一些服务器端脚本/代码处理(有关 AJAX 的更多信息)。

希望有点澄清, 祝你有个美好的一天

答案 1 :(得分:0)

不是&#34;标签&#34;是一个CSS选择器,他正在通过id&#34; builder&#34;

选择对象

在CSS中,您可以使用此语法选择内容。

  • &#34;#&#34; by id
  • &#34;&#34;按课程
  • &#34; sometag&#34;,没有特殊的特征,这意味着你正在选择一个标签(或一堆标签)。

使用标签或类或ID,您可以使用

等属性进行内部选择

&#34; DIV [名称= mydiv]&#34;

希望它有所帮助。