3

わかりましたので、これが状況です。これで私の髪を引っ張っています。

私はこれが初心者です。約6週間レールを使用しています。私は標準的なセットアップ パッケージを使用しており、私のコードではプロトタイプ ヘルパーを多用しています。私が言ったように、noob ;)

そこで、PrettyPhoto などの jQuery エフェクトをいくつか入れようとしています。しかし、ページが最初にロードされると、PrettyPhoto がうまく機能します。ただし、link_to_remote で作成されたリンクなど、Prototype ヘルパーを誰かが使用すると、Prettyphoto は機能しなくなります。

私はjRailsを試しました.競合を止めるためにJQueryサイトで提案されたすべての修正...

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

...prototype.js のすべての $ の名前を $$$ に変更するなど、いくつかのクレイジーなことを行っても無駄です。プロトタイプ ヘルパーが壊れるか、jQuery が壊れます。

私がこれらを一緒に機能させることはできないようです。

何か案は?

これが私のapplication.html.erbの一部です

<%= javascript_include_tag 'application' %>
<%= javascript_include_tag 'tooltip' %>
<%= javascript_include_tag 'jquery' %>
<%= javascript_include_tag 'jquery-ui' %>
<%= javascript_include_tag "jquery.prettyPhoto" %>
<%= javascript_include_tag 'prototype' %>
<%= javascript_include_tag 'scriptalicious' %>
</head>
<body>
<script type="text/javascript" charset="utf-8">
  jQuery(document).ready(
    function() {
      jQuery("a[rel^='prettyPhoto']").prettyPhoto();
    });
</script>

jquery の前にプロトタイプを配置すると、プロトタイプ ヘルパーが機能しません noconflict 句を配置すると、どちらも機能しません。

前もって感謝します!

クリス

ところで:これを試してみると、jQueryサイトから:

<script>
 jQuery.noConflict();

 // Use jQuery via jQuery(...)
 jQuery(document).ready(function(){
   jQuery("div").hide();
 });

 // Use Prototype with $(...), etc.
 $('someid').hide();
</script>

マイページが消える!

4

4 に答える 4

6

jQuery.noConflict();この後、jquery へのすべての呼び出しは、代わりjQuery()of $()

于 2010-03-27T09:55:18.760 に答える
0

もうすぐそこにいるようです。私はあなたがこのようなものが欲しいと思います:

<%= javascript_include_tag 'prototype' %>
<%= javascript_include_tag 'scriptalicious' %>
<%= javascript_include_tag 'jquery' %>
<%= javascript_include_tag 'jquery-ui' %>
<%= javascript_include_tag "jquery.prettyPhoto" %>
<%= javascript_include_tag 'application' %>
<%= javascript_include_tag 'tooltip' %>

<script type="text/javascript">
  jQuery.noConflict();

  // Use jQuery via jQuery(...)
  jQuery(document).ready(
    function() {
      jQuery("a[rel^='prettyPhoto']").prettyPhoto();
  });

  // Use Prototype with $(...), etc.
  $('someid').hide();
</script>

jQuery サイトでどのような例を見つけたかはわかりませんが、jQuery("div").hide(); ページ上のすべての div を隠しているように見えるため、ページが表示されなくなります。競合しないことが必要です。

上記のように javascript インクルードを並べ替えると、代わりにインライン JS を application.js に含めることができます。

于 2010-03-29T18:27:53.907 に答える
0

できることはたくさんあります。

それらの 1 つは、JavaScript タグをロードする順序を確認することです。通常、アプリケーションは最後に来る必要があります。

jrails を使用する場合、prototype および scriptaculous ライブラリをロードする必要はまったくありません。

恐れ入りますが、次のことをお試しください。

<%= javascript_include_tag 'jquery', 'jquery-ui', 'tooltip', 'jquery.prettyPhoto', 'application' %>

開発サイクルの初期段階にあるため、jquery ライブラリのみを使用してプロトタイプを完全に排除できます。jQuery 側にはさらに多くの選択肢があります。

これが誰もがすべきことだと言っているわけではありませんが、あなたの特定のケースではそれが合理的だと思われます.

于 2010-03-27T12:20:13.027 に答える
0

これらの次のファイルで$記号を jQuery に変更します

<%= javascript_include_tag 'jquery-ui' %>
<%= javascript_include_tag "jquery.prettyPhoto" %>

最初に jquery ファイルをインクルードしてから、プロトタイプをインクルードします。

問題が解決することを願っています

于 2010-04-25T07:09:31.007 に答える