2016-08-14 9 views
0

jQueryの内部でPHPコードを使用して同じページをスムーズにスクロールしようとしています(PHPを使用して最終的なjqueryコードを生成しようとしています)。しかし、それは働いていない何らかの理由で、誰もが誤りを指摘することができれば、私は感謝したり、それが同じページのスムーズスクロールが機能しない

// When the Document Object Model is ready 
    jQuery(document).ready(function(){ 
    // 'scroll' is the amount of pixels destination 
    // is from the top of the document 
    var scroll = jQuery('<?php echo get_option('smooth_scroll'); ?>').offset().top; 

// When button is clicked 
    jQuery('.test').click(function(){ 
    // Scroll down to 'scroll' 
    jQuery('html, body').animate({scrollTop:scroll}, 'slow'); 
    // Stop the link from acting like a normal anchor link 
    return false; 
    }); 
}); 

を働いていない、なぜ私はそれでクラス「テスト」とhrefのリンクを持っています。そのボタンをクリックすると、同じページの特定のdivにスクロールするためのスムーズなスクロールが必要になります。[get_option( 'smooth_scroll')] divはユーザーによって更新されます)。

+0

一般的に言えば、JavascriptやjQueryの中にPHPをテンプレート化するのは避けるべきですが、それは意見です。ただし、誰でもあなたの問題を解決できるようにするには、get_option( 'smooth_scroll')の出力値を指定する必要があります。また、ブラウザのコンソールを見て、そこにある可能性のあるエラーを追加する必要があります。 – rdgd

+0

"scrolltop.js:82 Uncaught SyntaxError:missing"引数リストの後 "error on" .offset()。top; " line –

答えて

0

まず第一に - クリックイベントにスクロール変数の割り当てを移動しようとしてください - それは上の計算されたとして、あなたの要素がその最終的な位置にないときに、現在あなたが事態を持つことができるため

jQuery(function(){ 
    jQuery('.test').on('click', function(e){ 
    e.preventDefault(); 
    var scroll = jQuery('<?php echo get_option('smooth_scroll'); ?>').offset().top; 
    jQuery('html, body').animate({scrollTop:scroll}, 'slow'); 
    }); 
}); 

DOMContentLoadedイベントは、完全なDOM構造をロードした後に呼び出されますが、CSS/JS/imageアセットはこの時点でロードされません。何が計算結果に影響する可能性があります。

+0

私はあなたの意見を持っていましたが、私はjQueryを少し新しくしていますので、どんなトレーニングでもお勧めしますか?私はあなたを覚えています。あなたはあなたのサイトでTinyMCEのチュートリアルを持っていますが、基本的にはチュートリアルから学んでくれました。ありがとうございました:) –

+0

jQueryをよりよく理解したい場合は、[jQuery Enlightment free book](http://jqueryenlightenment.com/)をお読みください。チュートリアルについて - はい、私はWordPressでTinyMCEの使い方について書いた:) –

関連する問題