如何绕过此Javascript错误

时间:2016-10-20 14:11:48

标签: javascript jquery html

美好的一天,我有一个可以在页面上的单选按钮上运行的随机播放脚本,它使用Jquery,我的问题是在我包含jquery之后,脚本跟随它的调用,我得到一个错误(来自Google Chrome开发者控制台)

Uncaught TypeError: $(...).shuffle is not a function

我已经尝试过这个问题,但是我被困住了。这是我的代码

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript">
(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);
</script>

脚本/函数的调用

<script>
 $(document).ready(function(){
    $('.questions label').shuffle();
  });
 </script>

HTML

<div class="questions">
<label>
    <input type="radio" name="choices" value="Hello">Hello
</label>
<br>
<label>
    <input type="radio" name="choices" value="Hello">Hello1<br>
</label>

<label>
    <input type="radio" name="choices" value="Hello">Hello2
</label>

<label>
    <input type="radio" name="choices" value="Hello">Hello3
</label>
</div>

1 个答案:

答案 0 :(得分:0)

我得到了一个解决方案 经过严肃的头脑风暴后

<script type="text/javascript">
jQuery(function($){
    var choices = $("#choices");

    choices.html(
        choices.find("label").sort(function(){
            return Math.round(Math.random())-0.5;
        })
    );    
});
</script>