本文比较基础的分析了该项目的js文件,大神就可以忽略了

首先打开feeds.js就可以看见整个文件包裹在下面这样的一个函数中

$(function () {

.........

.........

}

上面这个$(function () {};是$(document).ready(function(){});的简写,而$(document).ready里面的代码是在整个页面内容都加载完才执行的。好了,下面进入正题:

var page_title = $(document).attr("title");

/*上面这一句定义变量page_title,并且取得全局属性title的值赋给它*/

  function hide_stream_update() {

    $(".stream-update").hide();

    $(".stream-update .new-posts").text("");

    $(document).attr("title", page_title);

  };

/*定义无参函数hide_stream_update,前两行选择器取指定类分别执行hide()隐藏和text()取得对应属性的文本值,最后一个又用到了attr(""),但这次是给属性title赋后面的值*/

  $("body").keydown(function (evt) {

    var keyCode = evt.which?evt.which:evt.keyCode;

    if (evt.ctrlKey && keyCode == 80) {

      $(".btn-compose").click();

      return false;

    }

  });

/*上面这段定义了在body中keydown按键按下后产生的事件*/

$("#compose-form textarea[name='post']").keydown(function (evt) {

    var keyCode = evt.which?evt.which:evt.keyCode;

    if (evt.ctrlKey && (keyCode == 10 || keyCode == 13)) {

      $(".btn-post").click();

    }

  });

/*上面这段选择器选择了id=compose-form和name=post的文本框,规定了按键事件*/

  $(".btn-compose").click(function () {

    if ($(".compose").hasClass("composing")) {

      $(".compose").removeClass("composing");

      $(".compose").slideUp();

    }

    else {

      $(".compose").addClass("composing");

      $(".compose textarea").val("");

      $(".compose").slideDown(400, function () {

        $(".compose textarea").focus();

      });

    }

  });

/*这是一个点击事件,进入后有一个判断含有.compose的元素是否也含有composing类,如果有进入下面操作,第一个就是删除该元素中的composing类,同时该元素向上滑动。如果没有则执行else里面的操作,首先是添加类,然后用val方法设置选定元素中的值为空,最后向下滑动指定大小后聚焦*/