在jquery overlay中找不到“this”

时间:2013-06-06 20:18:20

标签: jquery overlay

使用jquery-1.2.7.tools.min.js中的覆盖工具。我有几个div设置为'img'和一些'a'标签上的叠加。

<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”链接时,我希望显示与其id匹配的overlay div,以及其他要隐藏的ID。但是,使用像这样的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()

“this”这个名称并不符合我的要求。本质上,所有带有类.simple_overlay的div都隐藏在hide()调用中。我希望显示带有点击的rel id的div,并隐藏其他的div,但似乎我错误地认为“这个”是什么......任何人都可以告诉我在这种情况下“这个”是什么?

1 个答案:

答案 0 :(得分:0)

当你在回调函数内部(在jQuery的上下文中)时,

this是一个DOM元素,例如,由click,each,bind等方法调用。

所以.overlay()需要指定一个回调函数才能知道我们正在谈论的“这个”。

试试这个来调试:

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

如果控制台显示$(this)未定义,您可能需要考虑修改代码以使用事件绑定而不是匿名函数

您始终可以将所需的选择器绑定到单击事件,并通过

隐藏它
$('.simple_overlay').on('click', function() {
           $(this).hide();
        }
    });