2010-03-09 112 views
0

我遇到了一个问题,我已经结束了两个名为相同的函数(jquery.fn.filter)。一个来自第三方插件,另一个来自我的插件之一。显然,我可以在我的插件中重命名该函数,但如何编写插件以避免发生这种情况的可能性最好?是否有可能引入某种类似java/.net的命名空间呢?如何避免jQuery插件之间的功能冲突

回答

0

我喜欢你对jQuery命名空间的看法。

http://docs.jquery.com/Using_jQuery_with_Other_Libraries)没有帮助,如果你有同名的任何功能。

+0

我不知道怎么这会有所帮助。我的问题是,两个jQuery插件定义Query.fn中具有相同名称的函数。 jQuery.fn.filterCharacters = function(options){...} – Jeremy 2010-03-09 15:54:56

2

这里的问题不在于jQuery代码是否可以使用名称空间 - 您描述的冲突发生在jQuery插件的“导出”接口中,即用户的函数名称。这与传统意义上的命名空间无关。

因为它是jQuerys概念的一个重要组成部分,所以在集合上使用简短易记的函数名称,在没有牺牲简单性的情况下,没有什么可以做到的。

说了这么多,可能的,但丑陋的解决方案会是什么样子:

$("#selector").fns("my.name.space.company")("myargument"); 

此代码将调用虚函数fns解析给定的字符串,以一个真正的功能,并返回该功能。然而,实现这一功能作为一个插件施加同样的问题...

结论:没有出路;-)

+0

作为最后一个注意事项:使用上述使用类似 , $(“#selector”)的相同长度的函数名称的轮询函数没有任何优势。 my_name_space_company( “myargument”); – 2010-03-09 15:48:02