web-dev-qa-db-ja.com

不明なTypeError:オブジェクト#<Object>にはメソッド 'movingBoxes'がありません

Asp.net mvcサイトでmovingBoxesプラグインを使用しようとしていますが、動作していません(明らかに)。このように、site.masterのheadタグにmovingboxes.jsをインポートしています

    <script src="<%: Url.Content("~/Scripts/jquery.movingboxes.js")%>" type="text/javascript"></script>

ブラウザはこのスクリプトを正常に取得します。これで、movingBoxesプラグインを呼び出すこのjQueryが少し含まれているsite.masterを継承する通常のビューができました。

<script type="text/javascript">
    $(document).ready(function () {
        $($('#slider-one'));
        $('#slider-one').movingBoxes({
            startPanel: 1,      
            panelWidth: .5,     
            fixedHeight: false
        });

        $('#slider-two').movingBoxes({
            startPanel: 1,     
            panelWidth: .5,     
            fixedHeight: false
        });
    });
</script>

ページを表示するとき。このプラグインを除き、すべてのものが正常に動作します(他のjqueryのものを含む)

enter image description here

そして、ここにエラーの説明があります enter image description here

助けていただければ幸いです

編集

どうやら私はこれを持っていた:

    <script type="text/javascript" src="../../Scripts/jquery-1.4.1.js" />
    <script src="<%: Url.Content("~/Scripts/jquery.movingboxes.js")%>" type="text/javascript"></script>

そして、これを次のように変更することで機能します。

    <script type="text/javascript" src="../../Scripts/jquery-1.4.1.js"></script>
    <script src="<%: Url.Content("~/Scripts/jquery.movingboxes.js")%>" type="text/javascript"></script>
36
Collin O'Connor

これを機能させるためにできることはいくつかあります。

  1. スクリプトがページに取り込まれていることを絶対に確認してください。確認する1つの方法は、Chromeデバッガーの[ソース]タブを使用してファイルを検索することです。

  2. JQueryは、それに確実に依存しているため、jQueryを組み込んだ後にスクリプトを組み込んだことを確認してください。

それ以外は、APIをチェックアウトしましたが、あなたは間違いなくすべてを正しくやっています。幸運の友人!

編集:スクリプトタグを必ず閉じてください。その解決策であることを示す回答が以下にあります。

40
Hacknightly

少数の要素のみが自己クローズできる、他のほとんどは明示的な終了タグを追加することで閉じる必要があることに留意してください。上記の場合、最初のスクリプトタグは適切に閉じられず、2番目のスクリプトの終了スクリプトタグはスクリプトセクションを閉じ、最初のスクリプトのみを外部スクリプトソースとしてロードし、2番目のスクリプトを無視しました。

どのタグをセルフクローズできるかについての詳細は、HTML5のW3Cドラフトを参照してください(ただし、以前のHTMLバージョンでは定義に違いはありませんでした)。

http://www.w3.org/TR/html5/syntax.html#end-tags (8.1.2.1、ポイント6)

14
SaschaM78

同じ問題がありました。 head部分のスクリプトの順序を変更しましたが、うまくいきました。プラグインが必要とするすべてのスクリプト-近くに滞在する必要があります。

例えば:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.latest.js"></script>
<script type="text/javascript"> 
$(document).ready(function() {
    $('#slider').cycle({
            fx: 'fade' 
        });
    });
</script>
4
Gazu

Jquery Responsive Slidesプラグインでも同じ問題が発生しました( http://responsive-slides.viljamis.com/ )。

JQueryの短いバージョン$(".rslides").responsiveSlides(..ではなく、長いバージョンを使用して修正しました:jQuery(".rslides").responsiveSlides(...

したがって、競合を引き起こさないように$jQueryに切り替えるか、適切なjQuery no conflictモードを使用します( http://api.jquery.com/jQuery.noConflict/

4
racl101

この問題が発生したのは、匿名関数の代わりに実際の関数を使用しようとしていたためです。

間違った:

$(document).on('change', "#MyId", MyFunction());

正しい

$(document).on('change', "#MyId", MyFunction);

または、イベントオブジェクトまたは他のパラメーターを渡す必要がある場合も修正します。

$(document).on('change', "#MyId", function(e) { MyFunction(e); });
2
Valamas

IMGタグとULタグを使用していたため、このような問題もありました。

「コーナー」プラグインを$('#mydiv').corner()$('#myspan').corner()$('#myp').corner()などの要素に適用しようとしますが、$('#img').corner()には適用しないでください!このルールは、エミュレーションラウンドコーナー効果のために指定された要素に子DIVを追加することに関連しています。知っているように、IMG要素に子要素を含めることはできません。

Div内に必要な要素をラップし、IMGをbackground:CSSプロパティでDIVに変更することでこれを解決しました。

幸運を!

1

jqueryを2回リンクしたのと同じ問題がありました。新しいバージョンはプラグインを上書きしていました。

動作を開始した後のjqueryを削除しました。

1
Aakash Agrawal

実際、スクリプトの一部だけをダウンロードしたと思います。 jqueryサイトでスクリプト全体をダウンロードする前に、「コア」チェックボックスをオンにしてください。

1
Victor Augusto

また、正しいバージョンのjQueryを使用していることを確認することもお勧めします。私は最近、jQuery 1.6.2を使用して、hoverIntentプラグインで動作しないプロジェクトを取得しました。それを最新バージョンにアップグレードすると、それが修正されました。

0
Rob Erskine

縦棒グラフのレンダリングに使用していたrendorTo divのセレクターを使用していることがわかりました。どうやらそれはあなたのためにセレクタを追加するので、あなたはただidを渡す必要があります。

renderTo:$( '#myGraphDiv')を文字列 'myGraphDiv'にすると、エラーが修正され、他の人にも役立つことが期待されます。

0
vikingben