0

jquery.js という名前のファイルを作成しました。

$(document).ready(function{
   jQuery('#sortable1, #sortable2')
     .sortable(
     {'connectWith':'.connectedSortable',
     'dropOnEmpty':true,
     'scroll':true,
      items: "li:not(.emptyMessage)",
      receive: function(event, ui) {
             //hide empty message on receiver
             $('li.emptyMessage', this).hide();

             //show empty message on sender if applicable
             if($('li:not(.emptyMessage)', ui.sender).length == 0){
                 $('li.emptyMessage', ui.sender).show();
             } else {
                 $('li.emptyMessage', ui.sender).hide();
             }            
         }

    });
});

index.html.erbの には、次のものがあります。

最初のスクリプト SRC を追加しました...:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script src="assets/jquery.js" type="text/javascript"></script>
<ul id="sortable1" class="connectedSortable">
   <li>List 1-1</li>
   <li>List 1-2</li>
   <li>List 1-3</li>
   <li>List 1-4</li>
   <li class="emptyMessage">This is empty</li>
</ul>

<ul id="sortable2" class="connectedSortable">
  <li>List 2-1</li>
  <li>List 2-2</li>
  <li>List 2-3</li>
  <li>List 2-4</li>
  <li class="emptyMessage">This is empty</li>
</ul>
<div class="clear"></div>

で、console次のエラーが発生しました。

Uncaught SyntaxError: Unexpected token { :3000/assets/jquery.js?body=1:1
Uncaught ReferenceError: jQuery is not defined jquery_ujs.js:429
Uncaught ReferenceError: jQuery is not defined jquery.purr.js:162
Uncaught ReferenceError: jQuery is not defined best_in_place.js:561
Uncaught ReferenceError: jQuery is not defined workers.js:3
Uncaught ReferenceError: $ is not defined application.js:19
Uncaught SyntaxError: Unexpected token {

すべてのエラーは jquery.js によるものだと思います。

助けてください。

4

4 に答える 4

2

事前に申告する必要があると思いますdoc ready

jQuery pluginこのスクリプトの前に添付していない場合、これらの修正は機能しません。そのため、jQuery最初に次のスクリプトを含めてみてください。

And if you use cdn hosted script then page load performance will boostup.

世話をするための小さな修正:

$(document).ready(function{
   //--------------------^----missing braces '()'

そのはず:

$(document).ready(function(){

これで解決しない場合は、この行の上で宣言してみてください

jQuery = $.noConflict();
jQuery(document).ready(function($){

この順序が必要です:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>

<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script>
于 2013-01-08T17:44:52.663 に答える
1

完全な jquery ファイルもロードする必要があります。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

また、最初の 2 行を次のように変更することも、少し優れています。

jQuery(document).ready(function ($) {
    $('#sortable1, #sortable2')
于 2013-01-08T17:44:09.037 に答える
1

.js ファイルを含める前に、HTML に jquery を含めます

<script src="../../Scripts/jquery-1.8.3.js" type="text/javascript"></script>

それから..

<script src="../../Scripts/jQuery.js" type="text/javascript"></script>
于 2013-01-08T17:44:17.557 に答える
1

JQuery ライブラリが定義するものを使用する前に、ページに JQuery ライブラリを実際にロードする必要があります。ロードしないと、呼び出そうとしているものはどこにも定義されていないため、呼び出すものはありません。

たとえば、他のスクリプト タグの前に次のコードを配置します。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>

あなたの構文エラーに関するJaiの答えは、それに関しても正しいです:

Uncaught SyntaxError: Unexpected token { :3000/assets/jquery.js?body=1:1

無名関数宣言で function キーワードの後に​​括弧がないことが原因です。

パラメーターなしで無名関数を宣言する正しい方法は次のとおりです。


function () {
  //anonymous function routines/etc in here
}

したがって、最初の行は次のようにする必要があります。


$(document).ready(function () {

于 2013-01-08T17:45:07.410 に答える