jquery - 了解 jQuery 教程模块模式示例

标签 jquery code-organization module-pattern

考虑 Code Organization section of the Learning Center 中发布的有关模块模式的最后一个代码片段(如下所示) ,我试图理解示例中模块的某些方面:

  • 变量声明($items$container...)由 ; 分隔,而函数声明(createContainer , buildUrl, showItem, ....) 由 , 分隔。为什么?是不是括号有问题?
  • 为什么前三个变量的名称($items$container$currentItem)以 $ 开头?这是否意味着命名约定(因为 javascript 允许使用字符 $)来标识 DOM 片段变量,还是还有其他原因?
  • 为什么函数 createContainer 是使用 var 声明的,而其他函数(buildUrlshowItem、.. .) 没有 var

//使用 jQuery 功能的模块模式 $( 文档 ).ready(function() {

var feature = (function() {

var $items = $("#myFeature li");
var $container = $("<div class='container'></div>");
var $currentItem = null;
var urlBase = "/foo.php?item=";
var createContainer = function() {
  var $i = $( this );
  var $c = $container.clone().appendTo( $i );
  $i.data( "container", $c );
},
buildUrl = function() {
  return urlBase + $currentItem.attr("id");
},
showItem = function() {
  var $currentItem = $( this );
  getContent( showContent );
},
showItemByIndex = function( idx ) {
  $.proxy( showItem, $items.get( idx ) );
},
getContent = function( callback ) {
  $currentItem.data("container").load( buildUrl(), callback );
},
showContent = function() {
  $currentItem.data("container").show();
  hideContent();
},
hideContent = function() {
  $currentItem.siblings().each(function() {
    $( this ).data("container").hide();
  });
};
$items.each( createContainer ).click( showItem );

return {
  showItemByIndex: showItemByIndex
};

})();

feature.showItemByIndex( 0 );
});

最佳答案

  1. 您可以在多个语句中声明变量,或者仅在 1 个语句中声明变量,由您决定。 (var x;var y;var x,y;)。据我所知没有什么区别。

  2. 以 $ 开头:由开发人员选择,对于 PHP 程序员来说它看起来更好,不会影响变量,没有什么特别的,只是一个命名约定。我不使用它,也不推荐它,它只会让你的代码看起来最糟糕,而且如果你使用 jQuery 会让你更头疼。

  3. 参见第 1 点(它有“var”,但它位于语句的开头):

    var createContainer = function() {...},buildUrl = function() { ... },showItem = function() {... },showItemByIndex = function( idx ) {...}.. .;

查看更多详细信息http://www.w3schools.com/js/js_variables.asphttp://www.wikihow.com/Declare-a-Variable-in-Javascript

关于jquery - 了解 jQuery 教程模块模式示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14122284/

相关文章:

javascript - 模块模式内的 Google 图表

javascript - 我如何专业地构建我的模块模式 Javascript 项目?

javascript - jQuery - 有人可以帮忙用 .ajaxComplete() 拼接 jQuery 代码吗?

javascript - 了解每个 jquery 函数 - 意外输出

python - 使用共享包组织 Python 项目

powershell - 如何实现一个powershell函数库?

javascript - 第一次实现模块模式变量未定义

javascript - 将图像添加到 TinyMCE 编辑器

javascript - jQuery - 计算一个 td 内两个数字的总和并在新 td 内显示?

c# - 如何避免多个 $(document).ready()