0

jquery-1.2.7.tools.min.js でオーバーレイ ツールを使用します。「img」タグといくつかの「a」タグのオーバーレイとしていくつかの div を設定しています。

<img src="/image/test.png" rel="#1485">
<div id="1485" class="simple_overlay">
    <a rel="1486">1</a>
    <a rel="1487">2</a>
    <a rel="1488">3</a>
<div id="1486" class="simple_overlay">
    <a rel="1486">1</a>
    <a rel="1487">2</a>
    <a rel="1488">3</a>
<div id="1487" class="simple_overlay">
    <a rel="1486">1</a>
    <a rel="1487">2</a>
    <a rel="1488">3</a>

「a」リンクの 1 つをクリックすると、その ID に一致するオーバーレイ div が表示され、その他は非表示になります。ただし、次のような jquery コードを使用する場合:

<script>
    $(document).ready(function () {
        $('img[rel]').overlay({
            oneInstance: false
        });

        $('a[rel]').overlay({
            oneInstance: false,
            onLoad: function (event) {
                $('.simple_overlay').not($(this)).hide();
            }
        });
    });
</script>

またはこれを使用する場合:

$(this).siblings().hide()

「これ」の指定は、私が望むことをしません。基本的に、クラス .simple_overlay を持つすべての div は hide() 呼び出しで非表示になります。クリックした rel id の div を表示し、それ以外は非表示にしたいのですが、「これ」とは何かを間違えているようです...この文脈で「これ」とは何か教えてもらえますか?

4

1 に答える 1

0

this(jQuery のコンテキストで) コールバック関数の内部にいるときの DOM 要素です。たとえば、click、each、bind などのメソッドによって呼び出されます。

したがって、.overlay() は、「これ」が何について話しているのかを知るために、コールバック関数を指定する必要があります。

これをデバッグしてみてください:

console.log($(this));
$('.simple_overlay').not($(this)).hide(); 

$(this) が未定義であることがコンソールに表示された場合は、無名関数ではなくイベント バインドを使用するようにコードを変更することを検討してください。

必要なセレクターをいつでもクリックイベントにバインドし、そのように非表示にすることができます

$('.simple_overlay').on('click', function() {
           $(this).hide();
        }
    });
于 2013-06-06T20:35:33.093 に答える