Mootools получает дочерний индекс элемента от его родителя - PullRequest
7 голосов
/ 18 августа 2011

Я использую делегирование событий в 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);
            });
    });

Ответы [ 2 ]

9 голосов
/ 18 августа 2011

Тип (Elements), возвращаемый getChildren, содержит Array методы, , включая indexOf.MooTools предоставит реализацию этого метода, если он не существует для браузера.Имея это в виду, вы можете написать:

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

Обновленный пример: http://jsfiddle.net/andrewwhitaker/uJarB/

0 голосов
/ 18 августа 2011

Это довольно странно, но вы всегда можете использовать Array.prototype s indexOf ...

Array.prototype.indexOf.call(list-o-children, elem-to-find)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...