“可拖动不是函数”,当在另一个函数中时

"draggable is not a function" when inside another function

本文关键字:函数 另一个 拖动      更新时间:2023-09-26

我试图在用户单击按钮时激活jQuery-ui .draggable-function。脚本包含在内且正常,因为当我使用以下代码时一切正常:

<script>
function test() {
$( ".bord" ).draggable({ containment: ".rom", scroll: false });
}
test()
</script>

然后 .bord 类是可拖动的。但我希望它只有在您单击按钮时才可拖动,所以我使用以下代码:

<script>
function test() {
$( ".bord" ).draggable({ containment: ".rom", scroll: false });
}
$("#bordplassering").click(function() {
    test();
});
</script>

问题从这里开始了...这给了我以下错误:

"类型错误: $(...).可拖动不是一个函数"

为什么!?

请像这样使用它:(你必须在document.ready函数中移动你的点击函数)

<script>
function test() {
$( ".bord" ).draggable({ containment: ".rom", scroll: false });
}
$( document ).ready(function() {
    $("#bordplassering").click(function() {
        test();
    });
});
</script>

试试这个结构:

 <script>
      $(function() {
        $(".bord").draggable({containment: ".rom", scroll: false});
      });
  </script>

但在开始之前:

  1. jQuery库必须在调用之前存在$
  2. jQuery UI库必须在调用$() $.draggable之前存在

此外,您还应该阅读有关 DOM 和 DOM 就绪事件的信息。

我建议仅在开始时应用拖动功能,并且在单击时您可以使用启用和禁用方法来使其无法和禁用。

http://api.jqueryui.com/draggable/#method-disable

使用文档就绪

$(document).ready(function() {
    $( ".bord" ).draggable({ containment: ".rom", scroll: false });
    $( ".bord" ).draggable( "disable" );
    $("#bordplassering").click(function() {
       $(".bord").draggable( "enable" );
    });
});

谢谢大家的帮助。正如此处的评论中指出的那样,问题是jQuery第二次加载到页脚.php文件中。

但是肯定也有很多改进代码的好主意。