在jQuery插件中接受文本字符串而不是元素

时间:2013-12-19 10:49:55

标签: javascript jquery function jquery-plugins

制作jQuery插件时,是否可以接受文本字符串而不是元素?

例如,而不是 $("#someelement").myPlugin();$('Some text string').myPlugin();

此外,是否可以允许多个参数?

例如,$('Text here', 'Another text').myPlugin();

我一直在研究,$()似乎只用于选择DOM元素。但是,不可能不使用它。当我仅使用$.myPlugin();尝试我的测试功能时,它没有用。

因此,对于这种事情我应该只使用一个功能吗?是否仅在定位DOM元素时使用jQuery插件(即$("p").greenify();示例)。或者像使用params的常规函数​​一样使用它们是否可以接受?

3 个答案:

答案 0 :(得分:3)

jQuery“plugins”只是jQuery对象的原型。因此,在调用像$('text')这样的构造函数时,它实际上“使用参数text”(jQuery会将其视为选择器)。

如果你只是想创建一个用于操作文本的“插件”,这里有一个简单的方法:

myPlugin('Text here', 'Another text');

如果您喜欢,可以扩展String原型:

String.prototype.myPlugin = function(suffix) {
    return this+suffix
};

'mytext'.myPlugin('.com') // -> mytext.com

答案 1 :(得分:1)

您可以将插件设计为接受字符串作为参数...

然后在jquery选择中使用它

$('#myid').myPlugin('some text');

甚至只是作为常规功能

myPlugin('some text');

答案 2 :(得分:0)

我不明白你的问题 - 你想做什么?

如果你想在不选择DOM节点的情况下只调用插件,大多数jquery扩展会将自己注册到$ .fn: $.fn.my_pluginname

在元素上调用它的一些可能性:

$('#my-css-id').myPlugin(); 
$('<div class="justCreatedNow">content</div>').appendTo('body').myPlugin();