私はこのフォーラムとインターネットを検索してこれに対する答えを探しましたが、正しい解決策を見つけることができない/完全にわかりません...すべてのjQuery変数をPJax with 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をドキュメントのreadyタグの中に追加すると、もはや起動されないことに気付きましたか?
pjaxが標準のjQueryでどのように動作するのか、誰かが私のコードで私を助けてくれるかどうかを説明できたらうれしいですね。
私は関数の中の変数を使用せず、代わりにdomを渡すことですべての作業を行っていました。これは少しハッキリでした。
presentation_carousel.animate({})
// became
$('.carousel').animate({})
これに関するヘルプやアドバイスは大歓迎です。私はRailsに慣れていないし、jQueryの乾燥や改善についての提案は常に開いている。
はありがとう編集:レイアウトでapplication.html.erbから 発揮します。これは歩留まりが呼び出される唯一の場所であり、メインコンテナdiv内にあります。
<div class="span9">
<div data-pjax-container>
<%= yield %>
</div>
</div>
デモページなしでこのコードを分析するのは難しいです。カルーセルはページのメインコンテンツの内側か外側か(pjaxによって更新されますか?) jquery-pjaxは便利ないくつかのイベントを発生させます - pjax:start、pjax:endなど。 –
こんにちは、残念ながら私の上司はデモページをインターネットに載せたくありません。これは私の同じマークアップスタイルですhttp://www.ajaxdaddy.com/demo-jquery-carousel.html –
[jquery-pjax events](https://github.com/defunkt/jquery-pjax #events)十分でしょうか? '$(document).on(" pjax:end "、handler)'は '$(document).ready(handler)'とおおまかに等価です。当然のことながら、最初のページの読み込みの準備ができているハンドラが必要です。 –