如何制作像$('#div')。myscript {(var1:1,var2:2)}这样的东西?

时间:2014-02-05 09:01:19

标签: jquery

抱歉这个可怜的问题,但我不知道它是什么。 最近我见过一个销售他的jquery脚本的人,我注意到它的功能基于:

$('#div').hisScript{(
var1 : example,
var2 : example2
)};

因此脚本中的代码适用于该div。我的问题是:这是什么?怎么样? 我认为是某种类型的封装或类似的东西。但我在互联网上找不到任何关于它的信息(可能是因为我不知道它是如何命名的)。有谁能举个例子?

2 个答案:

答案 0 :(得分:3)

这称为jQuery插件。

It's very easy to do。导入jQuery后,您只需执行

即可
$.fn.hisScript = function(opt){
    // do stuff, this is the jquery object
}

基本上,它有效,因为$.fn$.prototype的别名,而$是jQuery对象的构造函数。

一个简单的例子:

$.fn.reverseText = function(opt){
  this.each(function(){
    var $this = $(this), txt = $this.text();
    if (txt.indexOf(opt.having)!=-1) {
      $this.text(txt.split('').reverse().join(''));
    }
 });
}

// reverse the text of all paragraph containing 'sentence'
$('p').reverseText({having:'sentence'});

Demonstration

请注意

  • 你的问题中有大括号和括号倒置。
  • this进行迭代通常是一个好主意,即使您没有立即认为您将“插件”用于包含多个元素的集合

答案 1 :(得分:0)

目前还不清楚你是否在询问.hisScript,或者他是如何传递参数的。由于另一个用户发布了关于hisScript作为jquery插件的答案,我将触及传入该对象。我发现很多新手对javascript感到困惑,这个简单的例子似乎清除了很多混乱。

想一想:

$('#div').hisScript({
var1 : "someString",
var2 : 123123
});

这是

var obj = new Object();
obj.var1 = "someString";
obj.var2 = 123123;

$('#div').hisScript(obj);