javascript - 随机播放 jQuery 对象的一部分但返回整个对象

标签 javascript jquery

在 jQuery 对象中,我想打乱除第一个元素之外的所有元素。经过不同的尝试,我想出了这个:

var $shuffled = $('.slide').slice(1).shuffle().end();

但是这会返回一个空对象。如何首先选择对象的一部分(切片),然后对其进行洗牌(自定义函数),然后设置过滤器(结束),以便 $shuffled 返回整个对象而不仅仅是它的子集?

这是我使用的随机播放代码:

(function($){
    $.fn.shuffle = function() {

        var allElems = this.get(),
            getRandom = function(max) {
                return Math.floor(Math.random() * max);
            },
            shuffled = $.map(allElems, function(){
                var random = getRandom(allElems.length),
                    randEl = $(allElems[random]).clone(true)[0];
                allElems.splice(random, 1);
                return randEl;
           });

        this.each(function(i){
            $(this).replaceWith($(shuffled[i]));
        });

        return $(shuffled);
    };
})(jQuery);

最佳答案

好吧,我自己找到了一个简单的解决方案。我没有意识到.add()这就是我正在寻找的。这是现在的样子:

var $slides = $('.slide');
var $firstSlide = $slides.slice(0,1);
var $remainingSlides = $slides.slice(1).shuffle();

$slides = $firstSlide.add($remainingSlides);

不如一行行那么好,但至少相当可读。

关于javascript - 随机播放 jQuery 对象的一部分但返回整个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25248402/

相关文章:

javascript - 视频停止或完成播放时 Google SWFObject javascript 检测

jQuery - 选择所有不匹配项?

javascript - 如何在不使用 eval 的情况下动态访问 JSON 节点?

javascript - 如何在javascript中将字母转换为数字?

javascript - 将 div 附加到正文

javascript - 访问多个 css 属性

javascript - 计算 hh 时间的平均值 :mm format

jquery - 服务器代码标签在 jQuery 脚本中给出警告(预期表达式)

jquery - 菜单未显示在 html 页面中

javascript - 为什么我需要在 'stack' 之后添加 [exponent - 1] ?