2016-02-19 83 views
0

当用户单击按钮时,我试图激活jQuery-ui .draggable函数。这些脚本包括在内,OK,因为一切工作时我使用下面的代码:“draggable不是函数”当在另一个函数内

<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> 

而且这里的问题开始......这给了我以下错误:

“ TypeError:$(...)。draggable不是函数“

为什么!?

+0

你在你的html中添加了jQuery UI吗? –

+2

只是看起来像你的代码中的其他地方从jQuery中删除它。也许你不止一次包含了jQuery,而且包含了jQuery UI之后的最后一个。或者也许只是'$'不再指jQuery –

+0

其实这是问题 - 谢谢! jQuery第二次在footer.php文件中加载了一些基础文件。谢谢大家! – BTB

回答

1

请使用这样的:(你必须将你的点击功能的document.ready函数内)

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

$(document).ready(function() { 
    $("#bordplassering").click(function() { 
     test(); 
    }); 
}); 

</script> 
1

试试这个结构:

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

但在此之前,你会开始:

  1. jQuery库必须存在于调用之前$
  2. jQuery UI的图书馆有出席呼叫前$()$.draggable

你也应该阅读有关DOMDOM ready event

0

我会建议在启动时只应用draggble函数,在点击时可以使用启用和禁用方法使其无法启用和禁用。

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

使用的document.ready

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

感谢您的帮助,大家好。正如在这里的评论中指出的那样,问题在于jQuery在footer.php文件中第二次加载。

但肯定有许多伟大的想法,以改善代码。