ライトボックスが開いたときにページのスクロールを無効にしようとしていますが、これは本当に便利なスクリプトです。 (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. Array.prototype.mapは未定義を返します
- 2. dijit.byIdは未定義を返します
- 3. 「未定義」を返すコアクッキー
- 4. localStorageはリフレッシュするまで未定義を返しますか?
- 5. angular2サービスは未定義を返す
- 6. ブレードは未定義のオフセットを返す
- 7. JSON:getElementByIdは未定義を返す
- 8. Firebaseはフィールドを未定義として返します
- 9. angular.element(..)。scope()は最初は未定義を返します
- 10. JavaScript関数のクラスオブジェクトは未定義のまま返します
- 11. は、未定義のプロパティを返します:stdClassのエラーを
- 12. NodeJSオブジェクトは未定義を返します
- 13. JSONの子オブジェクトは未定義の値を返します
- 14. jquery map()関数は未定義を返します
- 15. React/Redux/ImmutableJS get()は未定義を返します
- 16. var iは未定義を返しますか?
- 17. 非同期forEach関数は未定義を返します
- 18. Google Places API getDetails formatted_phone_numberは未定義を返します
- 19. なぜfoo2()はここで未定義を返しますか?
- 20. $( "。class")。val()は未定義の値を返しています
- 21. model.isValidは常に未定義を返します
- 22. RhinoのJavaScriptインタプリタ - 関数は未定義を返します
- 23. $ uibModal close($ value)コールバックは常に未定義を返します
- 24. Ajaxはasp.netのリストの未定義のオブジェクトを返します。
- 25. this.refs.something.valueは反応で未定義を返します
- 26. なぜObject.getOwnPropertyDescriptor({}、 '__proto__')は未定義を返しますか?
- 27. Meteor 1.2.1 Assets.getTextは未定義を返します
- 28. jquery $ .getJSONは未定義の変数JSONデータを返します
- 29. document.getElementById( "x")。checkedは未定義を返します
- 30. jQuery data()は未定義を返します
私は同様の問題を持っていたし、それがダウンし、DOM名前空間になりました。あなたには、いくつかのコード、または単にチェックを示すことができましたあなたの名前とIDはもう一度、あなたのための答えは – SpYk3HH