18.10.2010, 16:51
|
Новичок на форуме
|
|
Регистрация: 18.10.2010
Сообщений: 5
|
|
Как добавить ссылку на событие в 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;"
- Как синтаксически правильно интегрировать это событие onclick в верхний скрипт?
- И, если такое невозможно, то каким образом можно хотябы присвоить такой ссылке атрибут rel.
- И если второй вариант невозможен, то как просто вставить в генерируемый html статическую ссылку
Спасибо. Я пытался решить вопрос самостоятельно, но тщетно. С синтаксисом плохо ориентируюсь.
Последний раз редактировалось dess, 18.10.2010 в 17:03.
|
|
18.10.2010, 22:39
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
1. пока что у вас что-то не связное выходит
2. в jQuery для события onclick, другой синтаксис:
$('element').click(function(){});
|
|
22.10.2010, 13:29
|
Кандидат Javascript-наук
|
|
Регистрация: 25.11.2008
Сообщений: 115
|
|
Можно навешивать обработчики события "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>');
|
|
28.10.2010, 06:27
|
Новичок на форуме
|
|
Регистрация: 18.10.2010
Сообщений: 5
|
|
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,
|
|
28.10.2010, 07:47
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от dess
|
<a id=msn class=cbut style=cursor:default>открыть</a>
|
кавычки проставьте
|
|
28.10.2010, 11:22
|
Новичок на форуме
|
|
Регистрация: 18.10.2010
Сообщений: 5
|
|
Сообщение от monolithed
|
кавычки проставьте
|
я проставлял. скрипт не работает... т.е. при клике на ссылку ничего не происходит...
|
|
28.10.2010, 11:46
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от dess
|
я проставлял. скрипт не работает... т.е. при клике на ссылку ничего не происходит...
|
я вам это сказал для того чтобы вы подправили свой расхлябный код.
не удивлюсь если вы один из адептов курса Е.Попова.
В вашем коде никто разбираться не будет пока вы его не приведет в порядок.
вызов к.л. функции может производится к примеру так:
$('#msn').click(function(){
tMess(n);
});
если вы этого не понимаете, следуйте в раздел работа
|
|
28.10.2010, 12:06
|
Новичок на форуме
|
|
Регистрация: 18.10.2010
Сообщений: 5
|
|
Сообщение от monolithed
|
не удивлюсь если вы один из адептов курса Е.Попова.
|
1. monolithed, я не просил мне хамить. Если вам нравится оскорблять незнакомых людей, попробуйте сделать это лично, а не публично да еще и в интернете.
2. Если никто не будет смотреть код, значит так и будет. Не нужно выражений. Я никого не обязываю смотреть эту тему, если не нравится — проходите мимо, а если есть предложения по оформлению — в ЛС.
3. Я бы не обращался за помощью если бы разбирался в языке и в том каким должен быть код. И если мой код ужасен (я не программист), то я предпочитаю остаться без ответа чем наслушаться грубостей на форуме.
Последний раз редактировалось dess, 28.10.2010 в 12:10.
|
|
28.10.2010, 13:07
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от dess
|
1. monolithed, я не просил мне хамить.
|
каким образом я вам нахамил? если это по вашему хамство, то вы явно ошиблись форумом.
т.к. здесь есть какие-то минимальные устоявшиеся правила форматирования кода, а если вы не можете не пытаетесь даже приложить усилия для решения вашей проблемы и подготовить код перед тем как покатать его кому-то то идите в раздел работа.
Сообщение от dess
|
а если есть предложения по оформлению — в ЛС.
|
в частном порядке вопросы решаются в разделе работа.
Сообщение от dess
|
3. Я бы не обращался за помощью если бы разбирался в языке и в том каким должен быть код. И если мой код ужасен (я не программист), то я предпочитаю остаться без ответа чем наслушаться грубостей на форуме.
|
Давать советы и не читать правила это по вашему глупости?
|
|
28.10.2010, 14:04
|
Новичок на форуме
|
|
Регистрация: 18.10.2010
Сообщений: 5
|
|
Сообщение от monolithed
|
каким образом я вам нахамил?
|
А, по-вашему, нормально причислять людей к каким-то адептам чьих-то курсов?
Вы — модератор? Если да, то в таком случае просто удалите мою тему без полемики, а если нет, то не нужно тыкать людей в правила лицом в такой форме.
Сообщение от monolithed
|
вы явно ошиблись форумом.
|
Вы правы, я серьезно сглупил, обратившись к братьям по языку, ведь, как оказалось, на stackoverflow явно куда безопаснее обращаться за помощью, хоть и на английском. Кстати, если уж вы так яро отстаиваете традиции форума... Вы понизили карму не моему однодневному профилю, а карму и репутацию форуму в целом в глазах тех, кому я буду его «рекомендовать». Мою тему удалят, но мнение о форуме останется надолго.
Сообщение от monolithed
|
Давать советы и не читать правила это по вашему глупости?
|
Я говорил не «глупости», а грубости. Ваши «советы» высказаны в весьма грубой форме. Знаете, когда нибудь и вам придется задать вопрос в теме, в которой вы мало что смыслите. Причем не потому, что не хотите делать ничего сами, а потому, что у вас нет выхода. Не думаю, что вам будет приятно, когда вас пошлют в раздел «работа» или еще куда из-за одной неисправной строки. Я приложил усилия в поиске решения и пытался по-разному настроить и синтакис и по-разному вызывать функцию... Я точно знаю, что код не работает именно из-за ссылки.
Тема закрыта, т.к. на этот же вопрос с первого раза ответили ребята на stackoverflow. Можно удалять за «нарушение правил», «неОдекватное поведение» и «расхлябаный код» В том числе и мой профиль тоже, т.к. судя по приёму, он мне больше не понадобится. Буду благодарен.
P.S. На заметку: «неодекватное» пишется через «а», «расхлябаный» пишется с двумя «н», а «по вашему» — через дефис. У вас на форуме нет правил по правописанию случайно? Ведь такое «расхлябанное» письмо неудобно читать (как и мой код, наверное)
Последний раз редактировалось dess, 28.10.2010 в 14:54.
|
|
|
|