Что фактически делает .val (). Trigger ('change')? - PullRequest
0 голосов
/ 13 июня 2018

Меня смущает эта строка в моем проекте:

Этот идентификатор: categories-product принадлежит <select>, и я видел в проекте, кто-то написал это: И мне интересно, что это в основномсредства ?

$('#categories-product').val(product.category.id).trigger('change');

Может кто-нибудь объяснить мне это?

Спасибо

Ответы [ 5 ]

0 голосов
/ 13 июня 2018

Это называется Chaining in Jquery, более подробную информацию можно найти по адресу Jquery Chaining .Это эквивалентно

$('#categories-product').val(product.category.id);
$('#categories-product')..trigger('change');
0 голосов
/ 13 июня 2018

trigger('change') фактически позволит среде исполнения javascript выполнить событие change для элемента.Если вы связали какое-либо событие change с этим элементом, то это позволит явно инициировать это событие изменения.

На самом деле, работа trigger() состоит в том, чтобы просто выполнить все обработчики и поведения, присоединенные к соответствующим элементам.для данного типа события.И указание имени события в качестве параметра вызовет только это событие.Например,

trigger('change') //triggers the change event listener only

trigger('click') //triggers the click event listener only

Итак, ваш код

('#categories-product').val(product.category.id).trigger('change');

Устанавливает значение #categories-product, а затем это явно вызывает событие changeтак что выполняется действие change, связанное с этим элементом.

0 голосов
/ 13 июня 2018

Чтобы лучше это понять, вы можете разбить эту строку на 2 оператора

$('#categories-product').val(product.category.id);
$('#categories-product').trigger('change');

Теперь ясно, что первая строка устанавливает значение, а вторая строка вызывает событие изменения.Вышесказанное является лишь кратким способом объединения утверждений в одно утверждение.

0 голосов
/ 13 июня 2018

Должен быть выпадающий список, т. Е. Тег select в DOM с идентификатором categories-product.

И

$('#categories-product').val(product.category.id).trigger('change');

устанавливает некоторое значение в качестве выбранного значения и затем запускаетсобытие изменения, так что, если для этого события селектора добавлен какой-либо прослушиватель для события изменения, должен быть выполнен обратный вызов

0 голосов
/ 13 июня 2018

Большинство методов jQuery обеспечивают цепочку , возвращая this (это набор jQuery, для которого вы вызвали метод).Это абсолютно ключевая часть jQuery API.val является одним из таких методов.Таким образом, этот код делает это:

$('#categories-product').val(product.category.id);
$('#categories-product').trigger('change');

... но без необходимости искать элемент второй раз.

Итак, он устанавливает значение выбора, а затем запускаетchange событие на нем (предположительно, обработчики этого события что-то делают).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...