“elems.sort 不是函数”在 jQuery 1.3.1 中

发布于 2024-10-21 21:53:33 字数 800 浏览 0 评论 0原文

我需要随机化我正在使用 html/jquery 构建的小游戏的答案选择。

我在 2009 年 10 月发现了 Russ Cam 在 Stack Overflow 上分享的 jQuery Randomize 插件 (请参见此处:使用 jQuery 随机化 div 元素序列)。

这个插件作为一个解决方案非常有效......除了......

由于某种原因它似乎不适用于 jQuery 1.3.1。 Firebug 在这一行抛出错误(“elems.sort 不是函数”):

elems.sort(function() { return (Math.round(Math.random())-0.5); }); 

现在,如果我在测试文件中包含 jQuery 1.3.2 而不是 1.3.1,它就会像魔术一样工作。

但有一个问题。我正在为其构建游戏的网站被锁定为 jQuery 1.3.1。这是无法改变的。

所以,有两件事:

  1. 任何人都可以帮助我理解出了什么问题,或者为什么它不起作用? jQuery 1.3.1 中损坏或缺失了什么?我是 js/jquery 的新手。

  2. 有人可以提出解决方法吗?编写该行的另一种方法可能在 1.3.1 中有效?

I needed to randomize answer choices for a little game I'm building using html/jquery.

I came across a jQuery Randomize plugin shared by Russ Cam on Stack Overflow on Oct. 2009
(see here: Randomize a sequence of div elements with jQuery).

This plugin works great as a solution.... EXCEPT...

For some reason it doesn't seem to work with jQuery 1.3.1. Firebug throws an error ("elems.sort is not a function") on this line:

elems.sort(function() { return (Math.round(Math.random())-0.5); }); 

Now, if I include jQuery 1.3.2 on my test file instead of 1.3.1, it works like magic.

But there's the rub. The site I'm building the game for is locked into jQuery 1.3.1. That cannot be changed.

So, two things:

  1. Can anyone help me understand what is wrong, or why it's not working? What is it that is broken or missing in jQuery 1.3.1? I am new to js/jquery.

  2. Can anyone suggest a workaround? An alternate way to write that line that might work in 1.3.1?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里的微风 2024-10-28 21:53:33

jQuery 1.3.2 开始,jQuery 代理原生 Array.prototype.sort 函数来处理 jQuery 对象。

使用jQuery 1.3.1,您不能直接在 jQuery 对象上使用sort,但是将 jQuery 对象转换为本机数组以应用排序是很容易的在:

var elems = $this.children(childElem).get(); // notice the .get()
elems.sort(function() { return (Math.round(Math.random())-0.5); });

From jQuery 1.3.2 onwards, jQuery proxied the native Array.prototype.sort function to work with a jQuery object.

With jQuery 1.3.1, you can't directly use sort on a jQuery object, but it is easy enough to convert a jQuery object to a native array to apply the sort on:

var elems = $this.children(childElem).get(); // notice the .get()
elems.sort(function() { return (Math.round(Math.random())-0.5); });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文