使用YUI.all检查类和添加类

时间:2013-04-24 20:33:45

标签: javascript html5 yui3

在jQuery中我会以不同的方式做到这一点,但我正在编辑YUI代码并且我试图不混合和匹配。

我有一个像这样的HTML项目:

<div class="market">
    <button class="area1 region03 optionSelected" data-type="market" data-vendor="1">Tulsa</button>
    <button class="area1 region03" data-type="market" data-vendor="1">Houston</button>
    <button class="area1 region03" data-type="market" data-vendor="1">Kansas City</button>
</div>
<div class="region">
    <button class="area1 region03" data-type="region" data-vendor="1">Midwest</button>
</div>

可能的选项是它有一个optionSelected或preOptionSelected类。如果我直接点击它就是optionSelected,我不想要任何其他东西来打扰它。但是,如果我点击另一个按钮,它需要测试它是否(以及同一数据类型中的所有其他按钮)在类中具有optionSelected。

现在我正在使用以下方法将preOptionSelected应用于数据类型中的所有按钮:

VZW.all('.region03').addClass('preOptionSelected');

这会添加类preOptionSelected,但我希望它首先测试optionSelected。我也在为每个地区和地区迁移到数据 - 我该如何测试?

2 个答案:

答案 0 :(得分:0)

好吧,既然我正在学习YUI3(遗留代码),我花了一些时间来弄明白:

VZW.all('.market button').each(function(subNode){
    if (subNode.getData('region') == node.getData('region')) {
        if (subNode.hasClass('selectorButton') {
            return false;
        } else {
            subNode.addClass('preOptionSelect');
        }
    }
});

如果有更好的方式我很高兴听到它,但这将在接下来的几个月内转移到jQuery,以便工作。

答案 1 :(得分:0)

我的编辑被吃掉了。您可以简化检查

if (subNode.getData('region') === node.getData('region') 
        && !subNode.hasClass('selectorButton')) {
    subNode.addClass('preOptionSelect');
}

但你所拥有的是合理惯用的YUI3,所以如果它有效,那就去吧!