如何在jQuery插件中没有冲突

时间:2014-03-09 16:56:32

标签: javascript jquery twitter-bootstrap

// COLLAPSE PLUGIN DEFINITION
  // ==========================

  var old = $.fn.collapse

  $.fn.collapse = function (option) {
   ......
  }

  $.fn.collapse.Constructor = Collapse


  // COLLAPSE NO CONFLICT
  // ====================

  $.fn.collapse.noConflict = function () {
    $.fn.collapse = old
    return this
  }

这是bootstrap 3 Collapse插件的代码。我正在通过准备这个插件代码来学习js。

我理解语法,但我不知道没有冲突是如何工作的? 为什么这种方式可以解决冲突? “这个”指向什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

这样做首先将$.fn.collapse的原始值分配给变量old。这样,它可以在覆盖时保留参考。

$.fn.collapse.noConflict函数中,它会从变量$.fn.collapse中放回old的原始值。 return this允许您将此折叠插件设置为其他变量。

var collapsePlugin = $('*').collapse.noConflict();

答案 1 :(得分:0)

jQuery.noConflict将重置$变量,因此它不再是jQuery的别名。除了只召唤一次,你真的不需要做太多其他事情。但是,如果您愿意,可以使用返回值创建自己的别名:

 var j = jQuery.noConflict();

 // Do something with jQuery
 j( "div p" ).hide();

 // Do something with another library's $()
 $( "content" ).style.display = "none";