帮助jQuery插件开发

时间:2011-04-20 14:17:37

标签: jquery jquery-plugins

我正在阅读几本教程。这是其中一个链接:http://blog.jeremymartin.name/2008/02/building-your-first-jquery-plugin-that.html

其中,作者说,

  

你会注意到,每当我需要在插件中选择一个元素时,我总是使用obj作为我的上下文(例如,moreLink = $('。truncate_more_link',obj))。这是将任何选择约束到当前截断元素所必需的。如果不设置这样的上下文,您将得到不可预测的结果。

我在其他教程中读过类似的陈述,但我仍然没有理解它们的真正含义。在我看来,我理解......

$('.truncate_more_link', obj)

...表示“选择带有.truncate_more_link类的元素以及变量obj表示的元素。”

但听起来本教程的作者说“选择.truncate_more_link类元素也是传递给插件函数的实际元素。为什么不做呢

$(obj)

而不是

$('.truncate_more_link', obj)  

我似乎缺少对范围的理解。

1 个答案:

答案 0 :(得分:0)

当您将两个参数传递给jQuery时,第二个参数将用作第一个参数的“上下文”。简短版本:$('foo', bar)表示$(bar).find('foo')完全相同

  

选择器上下文

     

默认情况下,选择器在DOM中从文档根开始执行搜索。但是,通过使用$()函数的可选第二个参数,可以为搜索提供备用上下文。例如,要在事件处理程序中进行搜索,可以限制搜索:

$('div.foo').click(function() {
  $('span', this).addClass('bar');
});
     

当搜索范围选择器仅限于this的上下文时,只有单击元素中的跨度才会获得附加类。

     

在内部,选择器上下文使用.find()方法实现,因此$('span', this)等同于$(this).find('span')

http://api.jquery.com/jQuery/#jQuery1