Как добавить ссылку на событие в js-код?
Есть следующий код, который занимается тем, что цепляет из определенного адреса название сообщения и ссылку на него, а затем генерирует список таких ссылок:
<script type="text/javascript"> function tMess(n){ var a=[' новое сообщение',' новых сообщения',' новых сообщений']; return a[n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2] }; function getPM(){ $.get("/messages",function(a){var s=$("b.unread",a).size(); if (s) {var n=tMess(s),all=[],leg=(s==1)?'Сообщение':'Сообщения';$("b.unread",a).each(function(){var title = $(this).html(), href = $(this).parent().attr("href"); all.push('» <a href="'+href+'">'+title+'</a>' );}); new _uWnd('ls','Новые сообщения',250,120,{icon:'/images/message.png',align:'left'},'<center>У тебя '+s+n+'!</center><br><fieldset><legend>'+leg+'</legend>'+all.join("<br>")+'</fieldset>' );}}); setTimeout(getPM,10000)}; getPM(); </script> Задача в том, чтобы эта ссылка, сгенерированная указанным выше скриптом, выполняла следующую функцию: onclick="openLayerB('PM',0,'/js/profile/pm.xml','Личные сообщения',750,410,'0','','',0,'justify'); $('#newmessage').dialog('close'); return false;"
Спасибо. Я пытался решить вопрос самостоятельно, но тщетно. С синтаксисом плохо ориентируюсь. |
1. пока что у вас что-то не связное выходит
2. в jQuery для события onclick, другой синтаксис: $('element').click(function(){}); |
Можно навешивать обработчики события "click" после вставки HTML-элементов на страницу.
Назначить класс у ссылки: all.push('<a href="'+href+'" class="handled">'+title+'</a>'); потом назначить обработчики: var handler = function(){ openLayerB('PM',0,'/js/profile/pm.xml','Личные сообщения',750,410,'0','','',0,'justify'); $('#newmessage').dialog('close'); return false; }; $('a.handled').live('click', handler); Или, если для вставки ссылок в документ вы используете что-то вроде innerHTML, то при генерировании ссылки можно написать так: var handler = function(){ openLayerB('PM',0,'/js/profile/pm.xml','Личные сообщения',750,410,'0','','',0,'justify'); $('#newmessage').dialog('close'); return false; }; all.push('<a href="'+href+'" onclick="handler()">'+title+'</a>'); |
Jurasmi, спасибо, но я так и не разобрался как это подогнать под свой код...
Вот: function tMess(n){var a=[' новое сообщение',' новых сообщения',' новых сообщений'];return a[n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2];};function getPM(){$.get("/index/14",function(a){var s=$("b.unread", a).size();if(s){var n=tMess(s),h=_uWnd.getdims(),j=h.clientW-245,g=h.clientH-135,href=(s==1)?$("b.unread",a).parent().attr("href"):'/index/14';new _uWnd('ls','Уведомление',200,100,{icon:'http://javascript.ucoz.net/images/message.png',min:0,max:0,x:j,y:g,alert:1,autosize:1,fixed:1,shadow:1,resize:0,fadetype:1,fadespeed:1000,fadeclosetype:2,fadeclosespeed:400},'Пришло '+s+n+'! <br><hr><a id=msn class=cbut style=cursor:default>открыть</a>');$('#msn').click(function(){openLayerB('PM',0,'/js/profile/pm.xml','Личные сообщения',750,410,'0','','',0,'justify');_uWnd.close('ls');});}});setTimeout(getPM,120000)};getPM(); Мне нужно сделать ссылку в этом участке: <a id=msn class=cbut style=cursor:default>открыть</a> Jurasmi, |
Цитата:
|
Цитата:
|
Цитата:
не удивлюсь если вы один из адептов курса Е.Попова. В вашем коде никто разбираться не будет пока вы его не приведет в порядок. вызов к.л. функции может производится к примеру так: $('#msn').click(function(){ tMess(n); }); если вы этого не понимаете, следуйте в раздел работа |
Цитата:
2. Если никто не будет смотреть код, значит так и будет. Не нужно выражений. Я никого не обязываю смотреть эту тему, если не нравится — проходите мимо, а если есть предложения по оформлению — в ЛС. 3. Я бы не обращался за помощью если бы разбирался в языке и в том каким должен быть код. И если мой код ужасен (я не программист), то я предпочитаю остаться без ответа чем наслушаться грубостей на форуме. |
Цитата:
т.к. здесь есть какие-то минимальные устоявшиеся правила форматирования кода, а если вы не можете не пытаетесь даже приложить усилия для решения вашей проблемы и подготовить код перед тем как покатать его кому-то то идите в раздел работа. Цитата:
Цитата:
|
Цитата:
Вы — модератор? Если да, то в таком случае просто удалите мою тему без полемики, а если нет, то не нужно тыкать людей в правила лицом в такой форме. Цитата:
Цитата:
Тема закрыта, т.к. на этот же вопрос с первого раза ответили ребята на stackoverflow. Можно удалять за «нарушение правил», «неОдекватное поведение» и «расхлябаный код» :) В том числе и мой профиль тоже, т.к. судя по приёму, он мне больше не понадобится. Буду благодарен. P.S. На заметку: «неодекватное» пишется через «а», «расхлябаный» пишется с двумя «н», а «по вашему» — через дефис. У вас на форуме нет правил по правописанию случайно? Ведь такое «расхлябанное» письмо неудобно читать (как и мой код, наверное) |
Часовой пояс GMT +3, время: 11:02. |