-1

jQueryライブラリを必要とするjSliderを使用する必要があるため、prototype.jsとjQuery.jsの間の$競合を解決しようとしています。

jquery.jsファイルの最後にjQuery.noConflict()を追加し、次にjslider.jsファイルで$._roundNumberをjQuery._roundNumberに変更します。それでも、jQuery._roundNumberは関数ではないというエラーが表示されます。助けてください。

4

2 に答える 2

0

プロトタイプとjqueryを統合する例を次に示します...正しいことをしたかどうかを確認してください。

<script src="prototype.js"></script>
<script src="effects.js"></script>
<script src="jquery.js"></script>



jQuery.noConflict();
     jQuery(document).ready(function($){
         jQuery("a").click(function(){
            Effect.Shake('shake_demo');
        });
    });





    <div id="shake_demo" style="width:150px; height:40px; background:#ccc; text-align:center;">
        <a href="#"  style="line-height:40px;">Click me to shake!</a>
    </div>

そして今、数を丸めるために、あなたはこのコードを使うことができます:

var txt=jQuery('#txtBox').val());
var amt = parseFloat(txt);
   alert(amt.toFixed(2);

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Number/toFixed

于 2012-04-27T09:42:30.700 に答える
0

修理済み。jQuery.noConflict()が機能しなかった理由は、現在のページに含めていたテンプレートページでjQueryがすでに使用されていたため、問題が2つあることに気づきました。

  1. デフォルトのjQueryセレクターである「$()」は、Tapestryにデフォルトで含まれているprototype.jsと衝突していました

  2. jquery.new.jsファイルの最後にjQuery.noConflict()を追加し、セレクターとして「jQuery()」を使用しようとすると、jqueryのバージョンが異なるため(これをjquery.old.jsと呼びましょう)、どちらも機能しませんでした。 )はすでにテンプレートページ(現在のページに含まれていました)に含まれていました。jquery.old.jsをprototype.jsで動作させるために、前の開発者はすでにjQuery.noConflict()を使用していたため、「jQuery()」セレクターもすでに使用されていました。

修正: jquery.new.jsファイルの最後に$ j2 = jQuery.noConflict()を追加し、jSliderを使用する新しいライブラリで「$ j2()」セレクターを使用し、jSliderのセレクターも変更しました。 jsファイル。今ではすべてうまく機能しています。

古いjqueryバージョンを使用するテンプレートページがサイト全体で使用されているため、jquery.new.jsファイルとjquery.old.jsファイルの両方を(1つだけではなく)プロジェクトに残しています(テストしたくない)これを変更した後のサイト全体)私が追加する新しいコンポーネントには、新しいバージョンのjquery(jquery.new.js)ファイルが必要です。そして、はい、jsライブラリファイルの最後ではなく、htmlページの上部にnoconflictコマンドを追加する方が良いことを知っています-スタックオーバーフローでのこの更新後に変更されます:)

于 2012-04-30T09:33:43.007 に答える