jquery - 访问 .each() 上的当前项目

标签 jquery this each

我有以下代码:

HTML

<div id="step-holder">
    <div class="step-no">1</div>
    <div class="step-dark-left"><a href="#">Basic details</a></div>
    <div class="step-dark-right">&nbsp;</div>
    <div class="step-no-off">2</div>
    <div class="step-light-left"><a href="#">SEO</a></div>
    <div class="step-light-right">&nbsp;</div>
    <div class="step-no-off">3</div>
    <div class="step-light-left"><a href="#">Preview</a></div>
    <div class="step-light-round">&nbsp;</div>
    <div class="clear"></div>
</div>

JQUERY

$('#step-holder a').click(function (e) {
    e.preventDefault();
    $(this).parent('.step-light-left').each(function () {
        $(this).removeClass('.step-light-left').addClass('.step-dark-left');
    });
});

但第二个 $(this) (在 .each 内)仍然引用原始的 $(this)。 所以,它不起作用。

如何实现这一目标?我不明白为什么第二个 $(this) 不引用 .each() 当前项目。

或者,如果您有其他解决方案,可以将所有 step-light-left 更改为 step-light-right ,反之亦然。

我需要做的是关闭所有“未点击”的 div 并打开点击的 div。

最佳答案

您的问题可能与的范围无关。

这一行是错误的:

$(this).removeClass('.step-light-left').addClass('.step-dark-left');

应该是:

$(this).removeClass('step-light-left').addClass('step-dark-left');

没有点。尝试一下。

添加 Chris 评论:您实际上不需要使用 .each(),您可以直接在选择器上添加/删除类。

更多添加:如果您想关闭所有“未点击”的 div 并打开点击的 div,如果您定义一个名为“active”或其他名称的类会怎样。然后,您只需在点击函数中执行类似的操作:

$('#step-holder .active').removeClass('active');
$(this).parent().addClass('active');

关于jquery - 访问 .each() 上的当前项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6716732/

相关文章:

jquery - 动态设置 MagicSuggest 中的值

jQuery 仅向一个 anchor 而不是所有 anchor 添加类

javascript - 如何迭代JavaScript对象并在指定位置显示结果?

javascript - js实例化对象前 'this'是什么?

javascript - 使用 .each() 在页面加载上绑定(bind)处理程序,并使用 jQuery .clone(true,true) 采用它们

javascript - 如何在按键或按键事件上使用 javascript 在文本字段中仅允许 18 个数字和 2 个小数点

javascript - 为什么“jquery animate callBack 函数在其他函数中不起作用”

jquery - 有什么简单的 jQuery 方法可以将文本从多个文本框传输到其他几个文本框吗?

java - 请向我解释 "this"

闭包函数内部 'this' 范围的 Javascript 混淆