Mootools从其父级获取元素的子索引

时间:2011-08-18 04:34:33

标签: javascript mootools

我在mootools中使用事件委托。我想知道点击的行号。我的解决方案显示在jsfiddle中:是否有比我目前更好的方式?

我的方法是比较元素直到找到匹配。我可以使用IndexOf方法吗?

(以下是来自jsfiddle的数据)

HTML:

<div id="Record_List">
    <div class="Row">
        <input type="submit" name="Row" value="Edit"/>
    </div>
    <div class="Row">
        <input type="submit" name="Row" value="Edit"/>
    </div>
</div>

使用Javascript:

window.addEvent(
    'domready',
    function()
    {
        $('Record_List').addEvent(
            'click:relay(input)',
            function(evt, target)
            {
                evt.stop();

                var rowElem = target.getParent();
                var rowNumber = -1;

                $('Record_List').getChildren('div.Row').each(
                    function (el, num)
                    {
                        if (rowElem === el)
                        {
                            rowNumber = num;
                        }
                    });

                // Find the position of the row and display it here:
                alert('Row number: ' + rowNumber);
            });
    });

3 个答案:

答案 0 :(得分:9)

Elements返回的类型(getChildren)包含Array方法,including indexOf。如果浏览器不存在,MooTools将提供该方法的实现。考虑到这一点,你可以写:

$('Record_List').getChildren('div.Row').indexOf(rowElem);

更新示例: http://jsfiddle.net/andrewwhitaker/uJarB/

答案 1 :(得分:0)

这非常hacky,但您可以随时使用Array.prototype的{​​{1}} ...

indexOf

答案 2 :(得分:-1)

MooTools make返回当前元素之前的所有同级元素,先前同级的长度等于当前元素的索引。

Element.getAllPrevious