不能从jquery对象调用的Javascript方法
Javascript methods that can not be called from jquery objects?
我正在阅读Learning jQuery 1.3(Jonathan Chaffer和Karl Swedberg),在对表进行排序时,他们在调用.sort()
之前使用了.get()
,并说
我们需要将jQuery对象转换为DOM节点数组。尽管jQuery对象在许多方面都像数组,但它们没有任何可用的原生数组方法,如.sort()。
法典:
$("#sort").click(function() {
var posts = $("#posts_div .post");
posts.sort(function(a, b) {
return ($(a).text()) > ($(b).text());
});
$.each(posts, function(index, post) { $("#posts_div").append(post); });
});
所以我尝试在不使用.get()
的情况下做到这一点,但令人惊讶的是,即使没有.get()
最新的 jQuery 也可以工作,但不适用于 1.3
所以做了一些小提琴来弄清楚
**没有.get()
jquery 1.2.6 就无法工作 **
使用 .get()
jquery 1.2.6
不使用.get()
jquery 1.7.2
使用 .get()
jquery 1.7.2
所以很明显,早期的jQuery对象过去没有.sort()
与Javascript数组相同的功能?但现在他们有..
所以我的问题是jQuery对象还不支持哪些函数,所以我们可以记住在使用之前转换为Javascript数组?
jQuery 对象目前支持 3 种数组方法:
var methods = 'pop push reverse shift sort splice unshift concat join slice toString indexOf lastIndexOf filter forEach every map some reduce reduceRight'.split(' ')
var implemented = $.grep(methods, function(m) {
return $.prototype[m] == Array.prototype[m];
});
console.log(implemented); // => ["push", "sort", "splice"]
它们也有slice
,但它与数组slice
不同:
$.prototype.slice === Array.prototype.slice // => false
jQuery确实有一个.sort
方法,只是没有正式记录,因为它不遵循jQuery方法的通常格式。
唯一支持的方法就是 API 中列出的方法。
.sort
实现为:
$.fn.sort = [].sort;
您可以根据需要以相同的方式添加自己的其他数组方法。
$.fn.reverse = [].reverse;
如果.sort
没有在你的jQuery版本中实现,请自己实现。
相关文章:
- 从Javascript方法返回全局变量
- 简单的JavaScript方法链接
- 如何为javascript方法放入jquery确认对话框
- jquery插件或javascript方法自动调整文本输入(而非文本区域)(固定宽度)可变高度的大小
- 在类外重写Javascript方法,使用默认行为
- 使用 JavaScript 方法滚动
- 如何从窗体调用外部javascript方法
- 使用c#在Web服务器上运行JavaScript方法
- 如何从角度 js 调用 javascript 方法
- 在Node.js中,我在哪里可以看到JavaScript方法的源代码,例如hasOwnProperty
- 简单的javascript方法问题
- iframe未执行Javascript方法(PHP)
- Javascript 方法看不到对象变量
- 从HTML中的另一个文件访问javascript方法
- 如何测试只在闭包范围中可见的javascript方法
- 将php表转换为angularjs javascript方法
- 使用ScriptManager.RegisterStartupScript从代码隐藏调用javascript方法
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- Java eqivalent method of “splice(a,b,..)“在 JavaScript 方法中
- 在客户端 Javascript 方法之后运行服务器方法