在条件语句中获取$(this)

时间:2014-11-10 14:10:42

标签: javascript jquery this

我有js功能

 $(" .prev.browse.left, .next.browse.right", spaceImageContainer).click(function () {
                    var naviIndex = '';
                    var currElem = '';
                    if ($('.navi a', spaceImageContainer).hasClass("active")) {
                        currElem = $(this); // need to get here .navi a with class active
                        naviIndex = $(this).index();
                    }
                   //...
                });

我需要使用类currElem写入变量active对象。目前我对我点击的内容感到反对。

2 个答案:

答案 0 :(得分:1)

怎么样?

currElem = $('.navi a', spaceImageContainer);
if (currElem.hasClass("active")) {
    // do stuff here. for instence, hide it.
    currElem.hide('slow');
}

编辑:

正如@demo所说:

$('.navi a', spaceImageContainer).each(function() {
    if ($(this).hasClass("active")) {
        currElem = $(this);
        naviIndex = $(this).index();
    }
});

答案 1 :(得分:1)

如果您只想选择'。navi a'元素'active',只需附加'active'即可到选择器字符串,如下所示:

currElem = $('.navi a.active', spaceImageContainer);

这将选择所有'a'元素,其类'active'且其父元素具有'navi'类。如果这些是您需要的唯一元素,则没有理由通过循环并手动检查自己;这只会减慢您的代码速度。

但是,如果您确实想要选择所有'。navi a'元素,然后为所有做一些事情,但要做一些事情特殊用于具有'有效'类的那个,然后您可以执行以下操作

$('.navi a', spaceImageContainer).each(function(){
    currElement = $(this);
    if (currElement.hasClass('active')){
        //do something special
    }
    else{
        //do something regular
    }
})

请注意,在为每个方法指定的回调函数中, this 变量是循环中当前的'.navi a'元素,而不是元素你点击了。