2016-02-19 84 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文件中第二次加載。

但肯定有許多偉大的想法,以改善代碼。