Документация для разработчиков
Темная тема

Функции поиска

Описание

Array|DOMNode 
BX.findChild(
 DOMNode obj,
 Object params, 
 bool recursive
 get_all
);
array|DOMNode 
BX.findChildren(
 DOMNode obj,
 Object params, 
 bool recursive
);
DOMNode 
BX.findParent(
 DOMNode obj,
 Object params, 
);
DOMNode 
BX.findNextSibling(
 DOMNode obj,
 Object params, 
);
DOMNode 
BX.findPreviousSibling(
 DOMNode obj,
 Object params, 
);

Функции поиска узлов DOM-структуры по набору параметров.

Примечание: BX.findChildren(obj, params, recursive) - синоним BX.findChild(obj, params, recursive, true).

Параметры функции

Параметр Описание
DOMNode obj Объект поиска
params Формат объекта, описывающего параметры поиска:
  • tagName|tag: имя тэга требуемого узла,
  • className|class: CSS-класс, который должен содержать требуемый узел,
  • attribute: {attribute: value, attribute: value} | attribute | [attribute, attribute....], - либо объект со списком и конкретными значениями атрибутов, либо атрибут или массив атрибутов, которые должны присутствовать в требуемом узле
  • property: {prop: value, prop: value} | prop | [prop, prop] - либо объект со свойств и конкретными значениями свойств, либо свойство или массив свойств, которые должны присутствовать в требуемом узле

Примечание: Вместо набора параметров можно указать фильтрующую функцию, которая будет вызываться для каждого проверяемого узла DOM-структуры. Функция должна вернуть true или false.

recursive показывает, что нужно искать не только непосредственно в дочерних элементах узла, а во всем поддереве. По умолчанию – false (только в дочерних).
get_all вернуть все найденные элементы в виде массива.

Примеры использования

var body = BX.findParent(BX("bx-panel"), {"tag" : "body"});
console.log(body);
obSelect = BX.findChild(BX("menu"), {
		"tag" : "li",
		"class" : "select"
	}, 
	true
);
obNotEmptyListItem = BX.findChild(
    BX("menu"), 
    function(el) {
        return el.tagName.toUpperCase() == 'LI' && !!el.firstChild
    }, 
    true
);

Пример-аналог $.each: находим всех пасынков id BX(this._id + '_placeholder') с классом crm-qpe-field, применяем к ним некие действия.

var fields = BX.findChild(BX(this._id + '_placeholder'), {class: 'crm-qpe-field'}, true, true);
fields.forEach(function(element){
   console.log(element.getAttribute('name'));
});

На jquery это примерно так:

$.each($( '#' + this ._id + '_placeholder .crm-qpe-field'), function(i, e){
   console.log($(e).attr('name'));
});


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
7
Антон Долганин
А также поиск по классу
findChildrenByClassName
findChildByClassName
4
Антон Долганин
Еще есть lastChild
5
Антон Долганин
findNextSibling,  findPreviousSibling - это поиск соседних элементов (следующего и предыдущего относительно цели запроса), отвечающих условиям поиска. Помогает в редких ситуациях, когда нет родителя подходящего, и чтобы не бежать сильно долго по DOM - опрашиваешь соседей.
© «Битрикс», 2001-2020, «1С-Битрикс», 2020
Наверх