Вы в основном правы относительно того, что up
и down
делают.Эта строка кода выбирает первый соответствующий элемент:
elem = $(elem);
var labelElement = elem.up(0).down('label > span.required') || // Up to parent, down to first span.required inside a label
elem.up(1).down('label > span.required') || // Up to grandparent, down to first span.required inside a label
elem.up(0).down('label.required > em') || // up to parent, down to first em inside a label.required
elem.up(1).down('label.required > em'); // up to grandparent, down to em within a label.required
... где в каждом случае он останавливается на первом найденном элементе.
Ошибка выглядит так, как если бы она была выброшена издвигатель селектора или что-то, переданное селектору, он не понимает.Ни один из этих селекторов не является особенно передовым, так что это немного странно.Вы используете Prototype 1.7 RC2?Поскольку текущий выпущенный Prototype все еще использует только свой собственный встроенный механизм выбора (тогда как 1.7 добавляет подключаемые).
А! Вот и все - посмотрите наid
с элементов в этой области.Есть ли в них пробелы, или «#», или «:», что-то в этом роде?Кажется, я помню ошибку в механизме селектора Prototype, когда он принимает довольно скучные идентификаторы ... (Почему идентификаторы актуальны? Под крышками механизм селектора может использовать их при обработке потомков или дочерних селекторов - например, при обработке down
звонки ...)
Обновление Эта (исправленная) ошибка может относиться к этому, если вы используете старую версию Prototype, вы все равно можете бытьврезаться в это.Определенно стоит посмотреть на идентификаторы.