このフォーラムとインターネットでこれに対する回答を検索しましたが、正しい解決策が見つからないようです/完全には理解していません...
私は以前、単純なスライドショーを表示するための Rails アプリケーションをセットアップしていました。ここでは jQuery を使用して、コンテナーを移動して次の「スライド」を表示します。次に、pxax を実装して、ページ全体ではなく歩留まりのみをロードすることにしました。私のjQueryを除いて、これはすべて正常に機能します。on() デリゲートを追加すると、イベントが再び発生することがわかりましたが、window = $(window) や div = $(div) などの初期変数は機能しなくなりました。
$(function() {
var presentation_carousel = $('.carousel')
var carousel_width = $(".slide").length * 700;
var carousel_max_next = ((carousel_width - 700) * -1);
var view_window = $(window);
var nav_collapse = $('div.nav-collapse');
presentation_carousel.css('width', carousel_width+"px")
$('.button_next').on ('click', function(e) {
$('.button').animate({
opacity: 0
}, 100)
presentation_carousel.animate({
'marginLeft' : "-=700px"
}, 500, function(){
$('.button').css('display', 'block');
$('#quiz_carousel .button_next').css('display', 'none');
$('.button').animate({
opacity: 1
}, 500)
})
});
具体的には、presentation_carousel div の動的なサイズ変更が発生しなくなりました。また、ドキュメントの準備ができているタグ内に標準の console.log を追加すると、それが起動されなくなることもわかりましたか?
誰かがpjaxが標準のjQueryでどのように機能するかを説明できればいいのですが、誰かが私のコードで私を助けてくれればいいですか?
関数内で変数を使用せず、代わりに毎回 dom をクロスすることで、すべてが機能するようになりました。ただし、これは少しハッキーに感じました...
presentation_carousel.animate({})
// became
$('.carousel').animate({})
これに関するヘルプやアドバイスは大歓迎です。私は Rails を初めて使用しますが、jQuery の乾燥と改善に関する提案はいつでも受け付けています。
ありがとうございました
編集: レイアウトの application.html.erb から実行します。これは、yield が呼び出される唯一の場所であり、メイン コンテナー div 内にあります。
<div class="span9">
<div data-pjax-container>
<%= yield %>
</div>
</div>