0

ScrollToプラグインが予想される距離の2倍スクロールするという奇妙な問題がありますが、ラジオボタンまたはチェックボックスラベルをクリックした場合のみです。

プラグインを削除して、これに置き換えました...

$("html, body").animate({ scrollTop: '+=50' }, 650);

それでも問題は残った。それで、運が悪かったのでアニメーションストップを追加してみました...

$("html, body").stop(true, true).animate({ scrollTop: '+=50' }, 650);

次に、この問題の非常に基本的なjsFiddleを作成しましたが、これはjQueryCoreのバグであると確信しています。jsFiddleが許す限り、すべてのjQueryバージョンでテストされています。これまでのところ、Safari、Firefox、IE8でも同じです。

<label>ラジオボタンまたはチェックボックスの横に要素があり、それが内の属性idとして使用されている場合は、をクリックすると、対応するラジオボタンまたはチェックボックスが選択されます。(これはそのように機能するはずです。)for<label><label>

<input id="type-0" type="radio" name="name" value="" />
<label for="type-0" title="">Click this Label and Radio is selected.</label>

ここでの問題は、jQueryscrollTop()が計算された位置を2倍にすることですが、ラジオボタンまたはチェックボックスを選択するをクリックした場合のみです。<label>ラジオボタンやチェックボックス自体を含む他のものをクリックすると、適切な距離をスクロールします。

http://jsfiddle.net/sparky672/sZAkJ/

ご覧のとおり、入力要素にリンクされているラベルをクリックすると、ダブルスクロールが発生します。

他のいくつかの観察:

私のページでは、スクロールが2回開始および停止するように見えました。その.stop(true, true)ため、アニメーションにを追加しました。ただし、それはこの問題を止める効果はありません。

これに依存する別の機能があるため、ラベルを使用して入力要素を選択することは避けられません。(例: http: //jsfiddle.net/sparky672/CgMX8/

を探しています...

1)これについての説明。そうでない場合は、おそらくそれは単なる(新しい?)jQueryコアのバグです。グーグルを検索した後、私はこの癖についての他の言及を見つけることができませんでした。 jQueryバグトラッカーにも何もありません

2)これの回避策。入力ラベルをクリックして、スクロールを2倍にしないようにすることができます。ラジオボタンやラベルなど、コンテナ内の何かがクリックされたときにスクロール効果を実現したいと思います。セレクターを改良して、ラベルをクリックするとスクロールを半分にカットできると思いますが、他の何かをクリックしても正常に機能します。(アニメーションが2回起動されたように見えるため、これもうまく機能しない可能性があります。)

4

1 に答える 1

2

1)これについての説明。そうでない場合は、おそらくそれは単なる(新しい?)jQueryコアのバグです。グーグルを検索した後、私はこの癖についての他の言及を見つけることができませんでした。jQueryバグトラッカーにも何もありません。

これは、scrollTopアニメーションの問題ではありません。これは、がクリックされたときにclick2回処理されるイベントと関係があります。#wrapperlabel

labelをクリックすると、イベントclickが最大でバブルし#wrapperます。ただし、をクリックすると、関連付けられているイベントlabelもトリガーされ、これもにバブルします。clickinput#wrapper

これを証明するには、次のを確認してください:http : //jsfiddle.net/g9gAT/。イベントが処理されるたびclickに、ターゲット要素のタグ名を追加します。クリックするlabelと、追加labelされ、その後に。が続きinputます。

2)これの回避策。入力ラベルをクリックして、スクロールを2倍にしないようにすることができます。

$("#wrapper label").click(function (e) {
    e.stopPropagation();
});

更新例: http: //jsfiddle.net/r3fX4/

于 2011-10-19T16:50:32.247 に答える