0

在 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 。我也在迁移到每个地区和地区的数据——我该如何测试这些数据?

4

2 回答 2

0

我的编辑被吃掉了。您可以将支票简化为

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

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

于 2013-04-25T16:34:03.430 回答
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 上,所以工作正常。

于 2013-04-24T20:56:13.113 回答