直接在jQuery对象上定义实用程序函数是否有任何特定的好处:
例如,给出以下两个结构:
$.someUtility = function(){
//do some something with jQuery
}
var someUtility = function(){
//do some something with jQuery
}
我是否有任何具体原因要在第二个例子中使用第一个例子?
快速更新: 我不需要做任何链接,我的实用程序不是传统意义上的插件;它不会对jQuery选择器执行任何操作。
答案 0 :(得分:2)
如果您严格编写实用程序函数而不是包装器方法,我认为主要的好处就是您的编码风格会更加一致。如果您计划在多个页面上使用该功能,则一致的样式对您很重要。
答案 1 :(得分:2)
您只是借用全局jQuery函数对象,使您的函数可用于其他脚本,而不会进一步污染全局变量环境。
如果您没有其他依赖该功能的脚本,您可以将其设为局部变量,除了您将污染本地变量环境外,没有任何不利之处。
答案 2 :(得分:1)
可以找到三个很好的理由来选择直接在JQuery对象上追加函数:
你想构建一个JQuery插件(最明显的原因)
您编程的函数适用于DOM节点,因此可以直接应用于JQuery查询返回的DOM节点(对不起押韵)
在整个代码中保持一致性,因为您将导致使用 $ 对象
答案 3 :(得分:0)
使用$.fn.someUtility
。
基本上,第一个选项是创建一个jQuery插件。这允许您的代码在jQuery上下文中轻松重用。在jQuery插件中,this
标识符指向在jQuery选择器中选择的元素,在操作元素时允许更大的灵活性。
我想你的问题的答案是它真的取决于。你在多个地方使用你的功能吗?
有关详细信息,请参阅JQuery Plugins。
答案 4 :(得分:0)
原因是你的函数可以在jQuery包装的对象数组上运行,而不会跳过通常的箍。同样在函数的上下文中,this
成为对调用函数的jQuery对象的引用。
修改
我的回答是假定在$.fn.func
下定义你的功能。
除非您需要访问jQuery所选元素,否则我可以看到的唯一好处是在$.func
下定义是您避免与全局范围中定义的其他函数发生名称冲突。 (正如我在下面的评论中提到的那样。)
答案 5 :(得分:0)
如果您的实用程序函数使用jQuery(因此需要它存在),那么我会说您可以使用它们的命名空间并将其放在$ .fn.myUtility下,正如其他人所建议的那样。如果您的实用程序函数完全独立于jQuery并且根本不使用它,并且您可能还有其他此类实用程序函数,那么我倾向于创建自己的全局命名空间并将您的函数放在那里,例如JLF。 myUtility。这使得您的代码在未来即使在非jQuery项目中也可以更容易重用。
答案 6 :(得分:-1)
对我来说,jQuery从“菊花链”设置中获得了很多灵活性和强大功能,因为每个插件返回“this”后你可以随时调用另一个插件,更不用说你正在扩展一个已经很强大的工具,这似乎是个好主意:))