2010-11-21 28 views
1

私は、Divの数がいくつかあり、それぞれがJQuery UIのドラッグ可能なライブラリを使用してドラッグ可能に設定されています。JQuery Draggableメソッドは部分ビューの内部からは利用できません

Jqueryスクリプトはマスターページに読み込まれ、独自のpartialviewを開くと正常に動作します。しかし、私はajaxを使ってメインページにこの部分ビューをロードし、ドロップダウンリストでオプションを選択してトリガします。私はこれを行う、jqueryのコードは、もはや動作し、私はこのエラーを取得する場合:

Uncaught TypeError: Object #<an Object> has no method 'draggable' 

partialviewはjQueryライブラリへのアクセス権を持っていないようですが、私は理由を知りません。

私はドラッグ可能なように設定本部のセットアップを使用していたコードは以下の通りです:

$(function() { 
     $(".NameBox").draggable({ 
      revert: true, 

      start: function (event, ui) { 

       document.onselectstart = function() { return false; }; 

      }, 
      stop: function (event, ui) { 
       document.onselectstart = function() { return true; } 
      } 

     }); 
     $(".NameBox").live(droppable({ 
      accept: '.NameBox', 
      drop: function (event, ui) { 
       alert(ui.draggable.attr("dropped")) 


     }); 
}); 

部分図は、jQueryのロードステートメントを使用してロードされます。

$('#relationships').load('<%= Url.Action("ListRelationshipMappings", "Admin") %>/' + $("#availibleInstances").val()) 

availibleInstancesはそれだけのドロップダウンリストでありますIDフィールドの選択を可能にする。

+0

不明な点がある場合は、下の投票が何であったか分かりません。私に知らせてください。 –

+5

私は「うまくいかない」と漠然とした質問のタイトルのために下降しました。あなたがそのエラーを取得した場合、Javascriptは少なくとも動作している必要があります。私のおばあちゃんが死のブルースクリーンに使用する用語は「動作していません」です。 ;)試してみてください: "Uncaught TypeError:Object#にはメソッドがありません 'draggable' PartialViewを使用するとエラー" – jfar

+0

@jfar "、" not working "は私の祖母が死のブルースクリーンに使用する用語です、looooooooooooooooooooooooooool、笑いながら画面上のビール。これをブックマークして参考にしてください:-) –

答えて

3

私はTelerik MVCスクリプト登録オプションを使用してスクリプトをロードしていたため、これはJqueryの独自のバージョンをロードして競合を引き起こしていたためです。これはjqueryのなしTelerikスクリプトをロードするために、以下を使用して

を解決することができます。

<% Html.Telerik().ScriptRegistrar().jQuery(false); %> 
2

このエラーは、通常、UIのjavascriptライブラリを適切に参照していないために発生します。

+0

私が言ったように、JQueryとUIライブラリはマスターページで参照されていますが、これは部分ビューを直接使用すると動作しますが、ajaxを使用して別のページに読み込まれたときには、 ajaxコール経由で読み込んでいますか? –

+0

@Sam、firebugに行って、利用可能なjavascriptライブラリがあるかどうかを確認するか、そのページでもviewourceを行うことができます。 – kobe

+0

@govはい、それらのライブラリは利用可能であり、メインページの一部で使用されています –

0

私は同じ問題を抱えていたし、私は次のスクリプトは、マスターページに及び部分図でロードされていたが実現しました私は...あなたは二回、スクリプトをロードしないようにしてください

...アヤックスを使用してロードされた

1
<!--<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>--> 
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> 
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 

たとえば、ライブラリの前にあなたのUIがリストされている場合は、上記のようにこのエラーが表示されます。代わりに、あなたは以下のようにそれを行う:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> 
<!--<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>--> 

あなたはしません。

ハッピーcodin'; D

と新しい人からの混乱がないだけように、間に何が必要ではない...ただのデモンストレーションのためのコメントアウト片を用いて。

関連する問題