1

请在下面检查我的 HTML:

<table cellpadding="0" cellpadding="0" border="0">
    <tr>
        <td>
            <div class="toogler">Demo1</div>
        </td>
    </tr>
    <tr>
        <td>
            <div class="element">Demo1 Content</div>
        </td>
    </tr>
    <tr>
        <td>
            <div class="toogler">Demo1</div>
        </td>
    </tr>
    <tr>
        <td>
            <div class="element">Demo1 Content</div>
        </td>
    </tr>
    <tr>
        <td>
            <div class="toogler">Demo2</div>
        </td>
    </tr>
    <tr>
        <td>
            <div class="element">Demo2 Content</div>
        </td>
    </tr>
    <tr>
        <td>
            <div class="toogler">Demo3</div>
        </td>
    </tr>
    <tr>
        <td>
            <div class="element">Demo3 Content</div>
        </td>
    </tr>
    <tr>
        <td>
            <div class="toogler">Demo4</div>
        </td>
    </tr>
    <tr>
        <td>
            <div class="element">Demo4 Content</div>
        </td>
    </tr>
</table>

这是我的 JS 代码:

<script type="text/javascript" language="javascript">
    $$('.toogler').each(function(e){
        alert(e);
        // this will alert all the toogler div object

    });
</script>

我的问题是如何使用类元素获取下一个 div 的对象

如果我有第一个工具的对象,那么我怎样才能获得下一个第一个 div 的对象哪个类'元素'

我不想将 id 赋予元素

4

4 回答 4

3

如果您无法按照 oskar 的建议更改 html 输出和重构(最佳情况),则此方法有效:

e.getParent().getParent().getNext().getFirst().getFirst()- 它会返回下一个 div,但速度很慢。

不幸的是,表格打破了 .getNext("div.element") 因为它不是兄弟姐妹。

另一种可行的方法是(如果它们的长度匹配) - 如果将引用作为 1-off 放入元素存储中,它会快得多:

var tooglers = $$("div.toogler"), elements = $$("div.element");
tooglers.each(function(el, i) {
    console.log(elements[i]);
    el.store("contentEl", elements[i]);
});

我不喜欢这两种解决方案,但不够可维护/可扩展。

于 2010-03-11T18:37:58.603 回答
0

将切换器分配给切换元素的最简单方法:

$$('.toogler').each(function(e, index){
    console.log($$('.element')[index]);
});

这是一个工作示例:http: //jsfiddle.net/oskar/aTaBB

此外,摆脱桌子。

于 2010-03-11T14:03:24.803 回答
0

尝试使用Element.getNext([match])

<script type="text/javascript" language="javascript">
    $$('.toogler').each(function(e){
        alert(e);

        // Get the next sibling with class element.
        var nextElement = e.getNext('.element');
        alert(nextElement);

    });
</script>
于 2010-03-11T18:43:33.847 回答
0

您必须逐个遍历并检查该类。

于 2010-03-11T12:09:07.847 回答