如何禁用或销毁jQuery插件函数?

时间:2014-03-01 19:17:51

标签: javascript jquery jquery-plugins

我有一个使用jQuery gridrotator效果的图库。我想点击按钮“启用效果”时启用效果。

<button id="build">Enable Effect</button>
<script type="text/javascript">
    $("button#build").click(function(){
        $('#ri-grid').gridrotator();
    });
</script>

并且enablig效果正常(请参阅此test)。要禁用此效果,此插件没有destroy方法。所以我尝试returnfalse这个功能但是没有用。

<button id="destroy">Disable Effect</button>
<script type="text/javascript">
    $("button#destroy").click(function(){
        $('#ri-grid').gridrotator(function(){
            return false;
        });
    });
</script>

如何禁用或销毁此功能?
非常感谢你的帮助! :)

5 个答案:

答案 0 :(得分:6)

I made and tested a good workaround not the perfect solution but it worked. simply remove the item from Dom tree then reload it

{form: form}

答案 1 :(得分:1)

也许有更好的方法,但这个黑客似乎有效:

$('#ri-grid').data('gridrotator').$items.length = 0;

答案 2 :(得分:1)

gridrotator插件似乎没有内置禁用功能。

使用.remove()将删除与删除的元素关联的所有绑定事件和jQuery数据。

尝试删除元素并将其插回原位。

$("button#destroy").click(function(){

  // remove plugin class so it doesn't rebind
  $("#ri-grid").removeClass("gridrotator");

  var $prev = $("#ri-grid").prev();
  if($prev.length) {

    // put back between siblings if necessary
    $prev.append($("#ri-grid").remove());

  } else {

    // or just re-add to its parent
    var $parent = $("#ri-grid").parent();
    $parent.prepend($("#ri-grid").remove());

  }

});

答案 3 :(得分:0)

希望这会让你微笑 -

<button id="destroy">Disable Effect</button>

<script type="text/javascript">
    $("button#destroy").click(function(){
        $('#ri-grid').gridrotator().stop();
    });
</script>

了解更多.stop()函数 - http://api.jquery.com/stop/

答案 4 :(得分:0)

<button id="destroy">Disable Effect</button>
<script type="text/javascript">
    $("button#destroy").click(function(){
        $('#ri-grid').stop();
    });
</script>