1

jqueryが最初に読み込まれるライブラリであるにもかかわらず、 jqueryライブラリを読み込むと、プロトタイプコードが機能しなくなりました。

ページの html は次のようになります。

<head>
...
<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript" src="/js/effects.js"></script>
<script type="text/javascript" src="/js/prototip.js"></script>
<script type="text/javascript" src="/js/dragdrop.js"></script>
<script type="text/javascript" src="/js/default.js"></script>
<script type="text/javascript" src="/js/limitfocus.js"></script>
...
</head>

<body>

<input type="radio" name="useOtherAddress" id="useOtherAddress_y" value="y" onclick="selectAddress()">
<input type="radio" name="useOtherAddress" id="useOtherAddress_n" value="y" onclick="selectAddress()">

<div id="myAddress" style="display: none;">
...
</div>

<script type="text/javascript">
  // the piece of protptype code no longer working 
  function selectAddress () {
    var t = $('myAddress');
    if ($('useOtherAddress_n').checked) {
      Effect.Appear(t);
      return;
    }
    t.hide();
  }
</script>

誰にもアイデアはありますか?このページ:

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

jqueryを最初にロードすると、すべてが便利になるはずです。しかし、そうではありません:[

4

3 に答える 3

4

jQuery.noConflict()次のように を呼び出す必要があります。

jQuery.noConflict(); //or possibly $j = jQuery.noConflict();
function selectAddress () {

次に、jQueryを最後に (ただし、プラグインの前に)ロードして、 が以前の値 (プロトタイプ)jQuery.noConflict()に復元されるようにします。$

于 2010-10-08T02:11:36.473 に答える
2

あなたがそれを助けることができるなら-あなたが示すコードは、両方のライブラリを一度に使用する必要があることを示していません-一般的なポリシーとして、jQueryとPrototypeを一緒に使用することは、たとえば切り替え中などの最後の手段または一時的な回避策である必要がありますフレームワーク。

フレームワークを一緒に実行したとしても、DOM の処理には何十もの微妙な落とし穴があり、後でお尻を噛んで追跡できないバグを作成する可能性があります。

1 つの JS フレームワークのみを使用するのが本当に、本当に最善です。

于 2010-10-08T02:13:01.690 に答える
1

+1 一般的なポリシーとして、jQuery と Prototype を一緒に使用することは、たとえばフレームワークを切り替えるときなど、最後の手段または一時的な回避策にする必要があります。

私の推測では、$ 変数で jQuery を使用しているか、競合を引き起こす関数を使用していると思われます!

jQuery を使いたいときはいつでも、 likejQueryの代わりに使用してください。jQuery の は単なるエイリアスであるため、すべての機能は を使用しなくても利用できます 。と一緒に prtotype を使用する必要がある場合は 、両方に $ を使用したい場合は、 の呼び出しで の制御を 戻すことができます。方法は次のとおりです。$jQuery(#id).click();$jQuery$jQuery$prototype$.noConflict()

...

<script type="text/javascript" src="/js/effects.js"></script>
<script type="text/javascript" src="/js/prototip.js"></script>
<script type="text/javascript" src="/js/dragdrop.js"></script>
<script type="text/javascript" src="/js/default.js"></script>
<script type="text/javascript" src="/js/limitfocus.js"></script>

<script type="text/javascript" src="/js/jquery.min.js"></script>
...
</head>

<body>

<input type="radio" name="useOtherAddress" id="useOtherAddress_y" value="y" onclick="selectAddress()">
<input type="radio" name="useOtherAddress" id="useOtherAddress_n" value="y" onclick="selectAddress()">

<div id="myAddress" style="display: none;">
...
</div>

<script type="text/javascript">
  // the piece of protptype code no longer working 
$.noConflict();
  jQuery(document).ready(function($) {
    //jquery with $

  });
//prototype with $
  function selectAddress () {
    var t = $('myAddress');
    if ($('useOtherAddress_n').checked) {
      Effect.Appear(t);
      return;
    }
    t.hide();
  }
</script>
于 2010-10-08T02:58:47.340 に答える