Селектор jQuery, содержащий термин "javascript:" - PullRequest
3 голосов
/ 19 декабря 2011

Если у меня есть тег привязки, например, так:

<A id=rgVistaRequestIssues_ctl00_ctl02_ctl03_CancelButton 
href="javascript:__doPostBack('rgGridIssues$ctl00$ctl02$ctl03$CancelButton','')">
Cancel</A>

И я хотел бы выбрать только этот тег привязки, я предположил, что это будет работать нормально:

$('a[href^="javascript:"]').click(function () { selected = true; });

Ноэто не работает вообще.

Что сработало:

$('a[href:contains("Cancel")]').click(function () { selected = true; });

Но этого недостаточно для моих вкусов.

По какой-то причине селектор не может найти термин "javascript:"во время выполнения?Разрешается ли это до того, как селектор сможет его найти?

Спасибо.

1 Ответ

1 голос
/ 23 января 2015

Поскольку он работал для :contains("Cancel"), наиболее вероятная причина того, что он не срабатывает, заключается в том, что Telerik динамически добавил JavaScript после загрузки страницы .

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

1010 *, например *

$(document).on('click', 'a[href^="javascript:"]', function () { selected = true; });

Он работает, слушая, как событие (щелчок) всплывает до неизменного предка (document по умолчанию, ничто иное не является более близким / удобным). Затем затем применяет селектор к элементам в цепочке пузырьков. Затем затем запускает функцию для любых соответствующих элементов, вызвавших событие . Для этого требуется, чтобы селектор существовал только в время события , а не в тот момент, когда событие было зарегистрировано.

Делегированные события имеют более быстрое время соединения (поскольку они подключают обработчик только к одному элементу), и любая незначительная задержка, добавленная во время события, останется незамеченной, поскольку вы просто не можете щелкнуть мышью достаточно быстро, чтобы она показала:)

Примечание. Не используйте 'body' для делегированных событий, так как в нем есть ошибка, связанная со стилем, которая может привести к тому, что события мыши не будут всплывать до body (если вычисленная высота тела равна 0).

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