2

私の js (および関連する html と css) は、http: //jsfiddle.net/twsx7/9/で確認できます。

私は、Blackboard Learn 9.1 と連携するための微調整に取り組んでいます (したがって、学習管理システムまたは微調整ビルディング ブロックを使用したことがある人は、なぜこの問題が発生するのかについて、すでに何らかの手がかりを持っている可能性があります)。

私が行っている変更には、どのコーステーマが適用されているかを確認し、それに基づいてテーブルにクラスを追加して、テーマに合わせてテーブルのスタイルを設定することが含まれます。

サーバーでこれを実行すると、$(...) is nullというエラーが表示されます var theme_id = $(".current").attr("id"); . 残りの JS は機能します (JS の上部セクションは、通常、ページに含まれている別のファイルであり、認証されたサーバー上にあるため、jsfiddle にリンクできないことに注意してください)。

このファイルへの私の貢献は次のとおりです (およびコードが失敗している場所):

242行目

$unitMap.addClass(getTheme());

381~385行目

function getTheme() {
    var theme_id = $(".current").attr("id"); // error occurs this line
    var theme = $("#"+theme_id).find("a").html();
    return theme.toUpperCase();
}

これは jQuery での私の最初の試みであるため、私の懸念の 1 つは、コードが記述されたバージョンの jQuery に対して間違った構文を使用していることです。

微調整を含めることを選択すると、コード内に次のものが見つかりました。

<script src='/webapps/qut-tweakbb-BBLEARN/jquery.js' type='text/javascript'></script><script src='/webapps/qut-tweakbb-BBLEARN/jquery.tweakSetup.js' type='text/javascript'></script>

jsFiddle の上部にあるコードは、jquery.tweakSetup.js からのものです。

jQuery のバージョンに間違ったマークアップを使用したことを願っています (ただし、元のコードが記述されたバージョンを見つけることはできません)アドバイスをいただければ幸いです。

4

3 に答える 3

6
  1. カスタム スクリプトを実行する前に、jQuery が読み込まれていることを確認してください
  2. コードを JSFiddle からコピーしてすぐに使用しましたか? Fiddle コードには、破損する癖があります。は;、無効な文字として定義されることがよくあります。削除して、自分で再入力してください。

追加: 3. John Fontaine が指摘したように、jQuery が別のライブラリと競合する可能性があります。これを回避するには、jQuery noConflict モードを使用できます。ドキュメントはこれについて非常に明確ですが、念のため、いくつかの例を示します。

最良の方法は次のとおりです。または、少なくともそれが私の好みです。

$など、の代わりに別の変数を使用します$j。そうすることで、このコードが .NET 以外の別のライブラリに依存していることが、あなたとあなたのコードの他の修正者にとって明確になります$

var $j = jQuery.noConflict();

// Use jQuery via $j(...)
$j(document).ready(function () {
  var secondary = $j("#secondary-footer");
  secondary.hide().addClass("fixed").fadeIn("fast");

  $j(window).scroll(function () {
    if (secondary.offset().top >= ($j(document).height() - 350)) {
      secondary.removeClass("fixed");
    } else if (secondary + ":not('.fixed')") {
      secondary.addClass("fixed");
    }
  });
});

このメソッドの「危険」は、この変数の使用を忘れる場合があることです。できることは、通常のドル記号を使用して開始し、終了したら、置換の検索を実行することです。

おそらく最も簡単な方法:

jQuery(function ($) {
  var secondary = $("#secondary-footer");
  secondary.hide().addClass("fixed").fadeIn("fast");

  $(window).scroll(function () {
    if (secondary.offset().top >= ($(document).height() - 350)) {
      secondary.removeClass("fixed");
    } else if (secondary + ":not('.fixed')") {
      secondary.addClass("fixed");
    }
  });
});

これにより、そのブロック、つまり で始まり でjQuery(function ($) {終わるブロックでjQuery を使用できます});

于 2013-01-07T20:09:34.600 に答える
1

Blackboard Learnは、ほとんどのページでprototypejs http://www.prototypejs.org/ライブラリを使用しています。JQuery スクリプトとプラグインを使用する場合は、非競合モードを使用し、代わりに $('') スタイルの呼び出しを JQuery('') 呼び出しとして呼び出す必要があります。http://docs.jquery.com/Using_jQuery_with_Other_Librariesで JQuery ドキュメントを参照してください。

于 2013-01-08T03:53:19.167 に答える