-
ID:dCRl29 さんの質問

Jqueryのイベントについて質問です。

CSSがある状態になったら~するというイベントハンドラの設定の仕方はできないのでしょうか?

具体的に言いますと、
「#point」が画面のスクロールに比例してmargin-leftが増えて
動いているとして、
「$("#point").css("margin-left") == "200px"」になったら、
何かを動かす。
というような事がしたいのです。

初歩的で恐縮ですが、ご教授お願いします。

みんなの回答 6 件

ID:8LJgsB さんの回答

パララックス的なサイトかな?

ID:dCRl29

そのとおりです。
スクロールをイベントにすると、断続的にイベントが発生してしまい困っています。

ID:vFHhRz さんの回答

.scroll() の中で margin-left をチェックすればよか。

ID:dCRl29

スクロールの1000px~1100pxの間で、フェードインさせて、フェードアウトするというものなので、.scroll() の中だと、連続的にイベントが発生してしまうのです。。。

ID:vFHhRz

スクロールの終了時にだけイベントを起動する
ttp://satussy.blogspot.jp/2011/11/blog-post_25.html

ID:dCRl29

スクロールの終了時だけのイベント。
これも興味ありです。助かります!

ID:NA1on7 さんの回答

scrollである必要はないけど、断続的に何らかのイベントを呼び出すしか方法はないよ。

ID:dCRl29

質問のようなイベントの取り方は存在しないという事でしょうか。。。
う~む。

ID:nT3gFj さんの回答

ほれ

jQueryでブラウザのスクロール値を取得してみる | BlackFlag

http://black-flag.net/jquery/20100607-1138.html
ID:dCRl29

こちらもちょっと見てみます。

ID:dCRl29 さんの回答

ちょっと追加で質問ですが、
30000pxくらいスクロールがあるなかの、例えば、5pxを通過した時に
何かを出すという時、
一瞬過ぎて、イベントが発生しないって事ってありえますか?

ID:nT3gFj

30,000pxのうちの例えば2,500px到達時に発火して、2,505pxにfalseするならそういうこともあるね。

ID:dCRl29

なぬ~~2500pxをピンポイントで指定してはいけないのですか?
ある程度範囲を与えて、2500~3500の時に発火としないといけないという事でしょうか?

ID:sFv5sw さんの回答

// marginを増やしていくパターン
$(window).on(’scroll’, function (event) {

var scroll = $(’body’).scrollTop();
var keisuu = 2;
var setMarginVal = scroll / keisuu;

$(’#point’).css(’marginLeft’, setMarginVal);

if (setMarginVal === ’200’) {
bokki();
}
});

var bokki = function () {
$(’#tinko’).animate({
width: ’300%’,
height: ’500%’
}, 500);

$(window).off(’scroll’);
};

// 通過するパターン
$(window).on(’scroll’, function (event) {

var scroll = $(’body’).scrollTop();

if (scroll >= 30000) {
syasei();
}
});

var syasei = function () {
$(’#tinko’).animate({
left: ’-100px’,
top: ’100px’
}, 500);

スクロールイベントは1pxごとに発生しないので通過した時に起こして、その後イベントをオフすればよし。
あと動作確認してないので、多分どっかしら間違ってる。

ID:sFv5sw

’200’じゃなくて200だった。

ID:dCRl29

ネーミングがステキすぎて、解読に集中できませんw
初心者の為、まだonやoffが理解できてませんので、調べてみます。
また質問させてください。

ID:sFv5sw

onがイベントを登録、offはイベントを停止です。

ID:yu.1x.

このコメ主はきっと出来る奴だ。すばらしい。

ID:dCRl29

ん?途中で一度offしたら、scroll内でのそれ以下の記述は無効になります?

ID:sFv5sw

$(window)の’scroll’イベントがそれ以降発生しなくなる。

ID:sFv5sw

スクロールイベントそのものは続けたいなら

var is_bokki = false;

$(window).on(’scroll’, function (event) {
// 略
if (is_bokki === false) {
bokki();
}
});

var bokki = function () {
// 略
is_bokki = true;
}

のように判定する変数を別途作って、一度しか呼ばないようにするとか。

ID:dCRl29

スクロールで戻ってくる事もあるので、
一度しか呼ばないのは、厳しいんです。。。

ID:sFv5sw

じゃあoffしないで普通にやればおk

ID:CGeswI

#tinko の width: ’300%’,height: ’500%’ ってなんやねん。
うらやましいわ。

ID:nT3gFj

やめて。そんなの入らないわっ

最終更新日:2013-11-08 (8,662 views)

関連するトピックス

ページ上部に戻る