jQuery を使用してこれを行うことができます。簡単にするために、固定位置コンテナーである祖先要素に「祖先」のクラスがあるとしましょう。また、子孫 (Joyride のヒント) に「子孫」のクラスがあるとしましょう。これらの前提はどちらも、HTML に簡単に追加できるものである必要があります。あるいは、既存のクラスを別の jQuery セレクターとして使用することもできます。次に、このようなことを行って検出を行うことができます。
if ($(".descendant").closest(".ancestor").css("position") == "fixed") {
// set your Joyride tip to fixed
}
更新しました
やりたいことを少し遠ざけてしまったので、「先祖の位置が固定されていて、スクロールするより近い先祖がいないかどうかを確認するにはどうすればよいですか?」というような質問だと思います。それに加えて、どの祖先にもクラスまたは ID が指定されていないという要件があります。この例のためだけに、Joyride ストップはすべて「joyride-stop」のクラスを持っていると仮定します。したがって、Joyride ストップに固定位置を適用するかどうかを決定するには、次の手順を実行するだけです (zurb joyride には依存関係があるため、jQuery を使用します)。
var jStops = $(".joyride-stop");
for (var i=0; i<jStops.length; i++) {
var pEls = jStops[i].parents();
for (var j=0; j<pEls.length; j++) {
if(pEls[j].css("position") == "fixed") {
// closest ancestor is fixed.
// insert code to fix your Joyride element here
break;
} else if (pEls[j].css("overflow") == "scroll") {
// closest ancestor scrolls so just break and move on
break;
}
}
}
overflow
ここではcss プロパティのみを確認したことに注意してください。さらに詳しく知りたい場合は、overflow-x、overflow-y、およびスクロールが存在するかどうかに影響を与える可能性のあるその他の属性 (他のカスタム JavaScript ウィジェットなど) を確認できます。チェックは、実際にページで何を心配する必要があるかによって異なります。
これはあなたが求めていたものですか?