JQuery нажмите после распространения - PullRequest
0 голосов
/ 12 июля 2011

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

Причина, по которой я спрашиваю, у меня есть telerik RadTabStrip, который динамически создается на сервере.На каждой вкладке есть карта, на которой есть маркеры, указывающие, где люди сидят в офисе.Мне нужно получить указатель на первый маркер, когда пользователь нажимает на вкладку, но у меня проблема в том, что элемент маркера не является частью DOM, пока после не распространился щелчок.

$('.tab').click(function(e){

   // e.continuePropagation(); ?? or something?

   var markerTop = $('.cardiff').offSet().top; // Is always 0 even though the marker is 243 px from the top

}):

Причина, по которой я не использую клиентский API telerik, заключается в том, что я нахожусь в паре функций JQuery AJAX success и не уверен, как он будет себя вести.

РЕДАКТИРОВАТЬ: Я решил свою проблему с помощью другого вызова AJAX, но я все еще хотел бы знать, есть ли способ заставить по умолчанию запускаться перед кодом в событии click

Ответы [ 4 ]

1 голос
/ 28 марта 2012

попробуйте это:

$('.tab').click(function(e){

   // e.continuePropagation(); ?? or something?

   setTimeout(function(){var markerTop = $('.cardiff').offSet().top;},0);

}):

Функция в вызове setTimeout будет вызываться после выполнения текущего потока, что, по-видимому, является тем, что вам нужно.

1 голос
/ 12 июля 2011
0 голосов
/ 12 июля 2011

Так что, если вам нужно запустить событие, когда элемент входит в DOM (я думаю, это ваша проблема, потому что ваши маркеры входят в DOM после события click), вы можете взглянуть на плагин livequery, Это старый плагин, но он позволяет вам прикреплять и манипулировать лементами, как только они будут созданы (таким образом, вы сможете получить их позицию!)

0 голосов
/ 12 июля 2011

Если, нажимая на вкладку AJAX в каком-либо контенте или иным образом с вашими маркерами в нем, вам нужно сделать обратный вызов в этом коде, а не в событии click вкладки.

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

Глядя на документацию TabStrip, вы точно хотите использовать событие OnClientTabSelected ?Вы упоминаете, что делаете некоторые пользовательские Ajax-вызовы, но, возможно, их можно было бы перенести в предварительно созданные события telerik?

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