1

我正在尝试浏览并记录一个插件,以便了解它是如何工作的,并且我遇到了一个以我无法理解的方式使用 .trigger 的函数。据我所知, .trigger 通常用于调用自定义事件。这是插件中触发器的这个用例:

$( this ).trigger( "beforecreate." + pluginName )
[ pluginName ]( "_init" )
[ pluginName ]( "_addNextPrev" )
.trigger( "create." + pluginName );

谁能向我解释这是在说什么?语法与 jQuery 文档中的不同,所以我假设它是某种速记或其他东西。

4

2 回答 2

2

我假设您对 the[...]而不是.trigger. 在 JavaScript 中有两种访问对象属性的方法:点表示法 ( obj.someProp) 和括号表示法 ( obj['someProp'])。
如果属性名称不是有效的标识符(例如,如果它包含空格),或者您在变量中有属性名称,则必须使用括号表示法,这就是这种情况。

让我们假设

var pluginName = 'foo';

那么上面的代码相当于:

$( this )
  .trigger( "beforecreate." + pluginName )
  .foo( "_init" )
  .foo( "_addNextPrev" )
  .trigger( "create." + pluginName );

这是另一个(虚构的)示例。这两个是等价的:

$(this).find('.foo');
$(this)['find']('.foo');
于 2012-08-27T14:38:19.097 回答
1

长话短说:

//  This is triggering the "beforecreate" EVENT on the plugin
$( this ).trigger( "beforecreate." + pluginName )
//  is calling the initialize event within the class
[ pluginName ]( "_init" )
//  i assume is calling another method in the class, probably to set specific html to the element being modded
[ pluginName ]( "_addNextPrev" )
//  Now that everything has been setup and the element has been "Created" into the plugin,
//    the coder is now triggering the plugin upon that element
.trigger( "create." + pluginName );
于 2012-08-27T14:32:52.007 回答