0

scrolltop メソッドを使用しようとしていますが、event.preventDefault が正しく機能していません。私が経験しているのは、ページが最初に上にスクロールしてから下にスクロールすることです。onclick により、ページが再送信されるか、何かが発生するようです... (ajax post??)

次のコードがあります

ボタン(トリガー)

 <a id="nextset" class='nextbtn' >Next Step</a>

イベント

jQuery('#nextset').click(function (event) {
                event.preventDefault();
                movenext('set');
                jQuery('html,body').animate({ scrollTop: $('#subtitles').offset().top }, 2000);
            });

機能

    function getfav(obj) {
            var myParams = "{ 'proattr':'" + obj + "'}";
            jQuery.ajax({
                type: "POST",
                url: "project.aspx/getproject",
                data: myParams,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                beforeSend: function () { jQuery('#wait').show(); },
                complete: function () { jQuery('#wait').hide(); },
                success: function (msg) {
                    GetProjectPic(msg.d, obj); //creates DOM and insert in div
                    Initbtns();// dynamic btns initialization
                }
            });
        }

  function movenext(obj) {
            //other codes to hide/show DOM
            getfav(nextobj); 
        }

リターンフォルスを追加すると; onclick イベントでは、ボタンが機能しません。

一番上にスクロールする原因は何ですか?

アップデート:

movenext 関数内のコード ブロックが原因でした。

jQuery('[id^="favdiv"]').empty(); 

event.preventDefault とは関係ありません。

奇妙なことに、画面が非表示の div の高さ (「favdiv」) よりもはるかにスクロールし、上下の画面効果が発生します。どうやって防げばいいのかわからない…

更新2

jqueryの空のメソッドを検索したところ、これが見つかりました。

jquery「空」はスクロールバーを変更します

4

3 に答える 3

1

次のスニペットを使用すると、デフォルトの動作を回避できます。

<a id="nextset" class="nextbtn" href="javascript:void(0);">Next Step</a>
于 2012-04-23T23:39:03.290 に答える
0

万が一、クリックイベントの最後に「returnfalse」を入れてみましたか?

jQuery('#nextset').click(function (event) {
            movenext('set');
            jQuery('html,body').animate({ scrollTop: $('#subtitles').offset().top }, 2000);
            event.preventDefault();
            return false;
        });
于 2012-04-24T00:31:39.697 に答える
0

みたいなことを書いてしまいます。それでも少しは上がりますが、少なくともページはジャンプしません

 jQuery('#favdiv' + obj).fadeOut('fast', function () { 
     jQuery('#favdiv' + obj).remove(); 
 });
 setTimeout(function () {
     jQuery('html,body').animate({ scrollTop: $('#subtitles').offset().top }, 1500);
 }, 500);
于 2012-04-24T17:54:45.967 に答える