如何为jQuery .each函数添加一个闭包?

时间:2015-04-05 23:21:07

标签: jquery variables each

我有两个类的链接,如下所示:

<a href="#" class="button post-12">Babylon</a>
<a href="#" class="button post-47">Sumer</a>
<a href="#" class="button post-87">Ur</a>

我不想用这些按钮来隐藏相关的帖子,例如,点击带有“post-12”类的链接会隐藏这个:

<p id="post-12">Babylon was an aicient city...</p>

为了实现这一点,我有了这个jQuery脚本。但它始终是id为“post-87”的帖子,所有三个按钮都关闭了。

var secondClass;
$('.button').each(function(){
    secondClass = $(this).attr('class');
    secondClass = secondClass.replace('button ','');
    $(this).click(function(){
        $('#'+secondClass+'').hide();
    });
});

我在这里做错了什么?如何为jQuery .each函数添加闭包?

2 个答案:

答案 0 :(得分:1)

更改secondClass声明的范围:

$('.button').each(function(){
    var secondClass = $(this).attr('class');
    secondClass = secondClass.replace('button ','');
    $(this).click(function(){
        $('#'+secondClass+'').hide();
    });
});

答案 1 :(得分:-1)

我认为我们可以在你的场景中利用-data:

<a href="#" data-divid="post-12" class="button post-12">Babylon</a>
<a href="#" data-divid="post-47" class="button post-47">Sumer</a>
<a href="#" data-divid="post-87" class="button post-87">Ur</a>

$('.button').click(function(){
    var divtoclose = $(this).data("divid");
    $('#'+divtoclose).hide();
});