ライトボックスが開いたときにページのスクロールを無効にしようとしていますが、これは本当に便利なスクリプトです。 (http://jsfiddle.net/mrtsherman/eXQf3/3/)、残念なことに、自分のページで使用すると、ライトボックスのスクロールも無効になります。私は警告だけでコードをデバッグし始めました。JSFiddleの中でevent.wheelDeltaは私のページで "undefined"を返すことを知りました。それは-120を返します。event.wheelDeltaは未定義を返します
答えて
jQueryイベントハンドラ内のevent
オブジェクトは、実際のイベントを反映しません。 wheelDelta
は、非標準のイベントプロパティIEとOperaで、jQueryイベントのoriginalEvent
プロパティから利用できます。
jQuery 1.7以降では、detail
プロパティはjQueryイベントオブジェクトで使用できません。したがって、DOMMouseScroll
イベントのこのプロパティにはevent.originalEvent.detail
を使用する必要があります。このメソッドは古いjQueryバージョンと下位互換性があります。
event.originalEvent.wheelDelta
デモ:http://jsfiddle.net/eXQf3/22/
も参照してください:http://api.jquery.com/category/events/event-object/
ありがとう、それは働いた! – CupOfTea696
あなたは天才です!私は非常に多くの他のソリューションを見てきました、あなたのフィドルは、 –
多くの時間を保存していただきありがとうございます – suvajit
$.fn.wheel = function (callback) {
return this.each(function() {
$(this).on('mousewheel DOMMouseScroll', function (e) {
e.delta = null;
if (e.originalEvent) {
if (e.originalEvent.wheelDelta) e.delta = e.originalEvent.wheelDelta/-40;
if (e.originalEvent.deltaY) e.delta = e.originalEvent.deltaY;
if (e.originalEvent.detail) e.delta = e.originalEvent.detail;
}
if (typeof callback == 'function') {
callback.call(this, e);
}
});
});
};
と、次のように使用します。
:jqueryの-fying機能(のため@マークする$('body').wheel(function (e) {
e.preventDefault();
$('#myDiv').append($('<div>').text(e.delta));
});
大きなTHX
最新のFirefoxではうまくいきませんデルタがここにあります: 'if(e.originalEven t && e.originalEvent.deltaY)return e.originalEvent.deltaY * -40' – mpen
@マークはそれを修正しました。今はうまくいくはずです... jqueryによって何か普遍的なデルタがあったらいいのに、このクロスブラウザのものは嫌いです –
うん、なぜこれがjQueryコアに含まれないのかわかりません。私はそれから機能を作った:http://jsfiddle.net/mnbayazit/uTbGp/3/ FFとクロムで動作し、まだIE8で動作するようにはなっていない。 – mpen
解決策を試しました。psycho brm、私はFirefoxで動作させるために、関数extractDelta(e)
を変更しました。 e.detail
の代わりにe.originalEvent.detail
を使用しました。Firefoxが未定義のデルタを返したからです。私はこのpostにソリューションと私のテストコードをアップロードしました。私はそれが助けて欲しいここでのWebkitとFFで
function extractDelta(e) {
if (e.wheelDelta) {
return e.wheelDelta;
}
if (e.originalEvent.detail) {
return e.originalEvent.detail * -40;
}
if (e.originalEvent && e.originalEvent.wheelDelta) {
return e.originalEvent.wheelDelta;
}
}
"詳細"は最新のFirefoxには存在していません。これは今deltaX、Y、Zに分割されているようです。 – mpen
こんにちはマーク。私はちょうどMacのFirefox 27.0.1でこのコードをテストしました。そして、私はマウスホイールによって返されたイベントをチェックしました。それはまだ内部に "originalEvent"要素を含み、その内部に "detail"要素を見つけることができます。私はそれを評価しており、それはまだ機能しています。ホイールを前後に動かすと、その符号が変わり、ホイールの速度に応じてその値が変わります。私は正常な値を得ています:1、-1、2、-1、-4,1 ...私はあなたがどこに問題があるか正確に分かりません。 – Timbergus
$(this).on('mousewheel DOMMouseScroll', function(e){
var dat = $(e.delegateTarget).data(); //in case you have set some, read it here.
var datx = dat.x || 0; // just to show how to get specific out of jq-data object
var eo = e.originalEvent;
var xy = eo.wheelDelta || -eo.detail; //shortest possible code
var x = eo.wheelDeltaX || (eo.axis==1?xy:0);
var y = eo.wheelDeltaY || (eo.axis==2?xy:0); //() necessary!
console.log(x,y);
});
作品、できない証拠IE :(
- 1. dijit.byIdは未定義を返します
- 2. Javascript - session.getAttributeは未定義の値を返します
- 3. 関数は未定義を返します
- 4. Meteor 1.2.1 Assets.getTextは未定義を返します
- 5. jquery $ .getJSONは未定義の変数JSONデータを返します
- 6. Forループは未定義の変数を返します
- 7. jQuery data()は未定義を返します
- 8. jquery map()関数は未定義を返します
- 9. NodeJSオブジェクトは未定義を返します
- 10. コールバック付きのCollection.update()は未定義を返します
- 11. なぜObject.getOwnPropertyDescriptor({}、 '__proto__')は未定義を返しますか?
- 12. 関数を返す '未定義' の値
- 13. 変数を返す - 未定義
- 14. Meteor.users.findOne()は未定義を返しますが、まだ動作しています
- 15. Googleマップv3のautocomplete.getBounds()は、設定後に未定義を返します
- 16. は未定義
- 17. 関数から返される値が未定義を返します
- 18. jQuery関数は未定義を返しますか?どうして?
- 19. 約束事で未定義の返答
- 20. 返品時にマップが未定義
- 21. 未定義の返品タイプGo
- 22. 未定義の問題があります!==未定義
- 23. 未定義関数から返されました
- 24. socket.io.jsを含むと未定義の 'require'が返されます
- 25. HTMLオプションタグのvalueプロパティは、IE9でWebブラウザコントロールで「未定義」を返します。
- 26. DatepickerがキャッチしないtypeErrorを返す:未定義の 'currentDay'
- 27. はTypeError:未定義
- 28. パラメータは未定義
- 29. 使用してjQueryのattrが(「onclickの」)を返し、未定義
- 30. define_methodはゼロのため、未定義のメソッド `各」を返す:NilClass
私は同様の問題を持っていたし、それがダウンし、DOM名前空間になりました。あなたには、いくつかのコード、または単にチェックを示すことができましたあなたの名前とIDはもう一度、あなたのための答えは – SpYk3HH