Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Корзина » !Некоректно использовать $(this) в onclick (да и любых событиях тегов


!Некоректно использовать $(this) в onclick (да и любых событиях тегов

Сообщений 1 страница 3 из 3

1

Обнаружено, что при перепасе старницы с помощью  jQuery, с изменением контента(введением -удалением сходных тегов), Привязка $(this) в onclick теряецо(Да и в любых других событиях прописанных в тегах, нужно использовать this чистого ява-Скрипт), поскольку в  jQuery зачастую осуществляецо смена идентификатора объекта при смене контента.

Пример, (Давно наткнулся на этот трабл => Lytebox на форуме (слайдшоу и фотогалерея), но сейчас был конкретный пример: => http://poramor.rolevka.ru/viewtopic.php … p=6#p27587 - Пост 109

Мой давний метод борьбы с проблемой таков:

<script>
//Прописываем по клику Уникальный атрибут в текущем элементе, на котором и строим дальнейшую селекцию элемента
var numb_event=0;
function THiS(a){;numb_event++;var b=numb_event, d='numb_event';
   if(a.getAttribute(d)==null){a.setAttribute(d,b);}else{b=a.getAttribute(d)};
   return $("#pun *[numb_event='"+b+"']")
}
function abcd(a){ //Конкретная клик-функция
a.toggleClass('visible'); a.next().toggleClass('visible');
}
</script>

Контент

<div class="quote-box spoiler-box"><div onclick="abcd(THiS(this))">в прошлой серии|закрыть</div><blockquote><p>Фирмину замечает у Дианы синяк под глазом и приходит в ужас от осознания того, что муж ее бьет. Но Диана все отрицает. За завтраком в доме Лаэрти обсуждают очередное письмо с угрозой Каролине и решают пока не обращаться в полицию, посчитав все это несерьезным. Олаву объявляет всем, что собирается баллотироваться в префекты Санту-Сол, и Оливии это не нравится. Они ссорятся, и Эвелин уходит вслед за мамой. В кафе Тианы на набережной они встречают Иво и мило беседуют втроем, пока в баре не появляется Николас.</p></blockquote></div>


(А Перепарсивает контент в посте 109 Данный Скрипт(Там есть теги музыки

Код:
<!--audio в одном v.2.3-->
<script type="text/javascript">
var player;
$(function(){
$('td#button-code').before('<td style=\'background-image:url("http://uploads.ru/i/W/Q/P/WQPBO.gif")\' onclick="tag_play()"><img src="/i/blank.gif" title="Загрузить музыку"></td>');
$("div.post-content").map(function () {
text = $(this).html(); 
if(text.indexOf("zippyshare.com") != -1) {
player = /\[audio\]http:\/\/www(\d+)\.zippyshare\.com\/v\/(\d+)\/file\.html\[\/audio\]/gi
$(this).html(text.replace(player, "<br /><embed type='application/x-shockwave-flash' src='http://api.zippyshare.com/api/mediaplayer/mediaplayer.swf' flashvars='height=20&amp;width=400&amp;file=http://www$1.zippyshare.com/downloadMusic%3Fkey%3D$2%26&amp;volume=80&amp;autostart=false&amp;frontcolor=0x000000&amp;backcolor=0xffffff&amp;lightcolor=0x000000&amp;type=flv' quality='high' menu='false' wmode='transparent' allowscriptaccess='always' height='20' width='400' name='mp3player' border='0' style='margin-bottom: 6px;'/>"));}
if(text.indexOf("promodj.ru") != -1) {
player = /\[audio\]http:\/\/(.*?)\.promodj\.ru\/(.*?)\/(\d+)\/(.*?)\.html\[\/audio\]/gi
$(this).html(text.replace(player, "<br /><embed src='http://i.cdn.promodeejay.net/swf/bigwaveplayer_release9.swf' type='application/x-shockwave-flash' wmode='transparent' width='100%' height='150' allowFullScreen='true' flashvars='link=http%3A%2F%2Fpromodj.ru%2Fprelisten%2F$3%2Fbobmarley%3Fwtf%3D0.41394098338022567%26no_external%3D1&amp;wave=http%3A%2F%2Fpromodj.ru%2Fwaveform_prelisten%2F$3%2Fbobmarley.png%3Fwtf%3D0.41394098338022567%26stub%3D1&amp;slowChannel=1&amp;autostart=0&amp;volumePercent=100&amp;wavecolor=12982542'></embed>"));
}
if(text.indexOf(".mp3") != -1) {
player = /\[audio\](.*?)\[\/audio\]/gi
$(this).html(text.replace(player, "<br /><embed src='http://www.demo-music.ru/pleer/pleer4.swf' type='application/x-shockwave-flash' allowscriptaccess='always' wmode='transparent' flashvars='comment=demo-music.ru&amp;st=http://www.demo-music.ru/pleer/style_pleer.txt&amp;file=$1' width='470' height='33'>"));
}  });  });
function tag_play()
{var FoundErrors = '';
var enterURL = prompt("Введите ссылку на музыку с promodj.ru, zippyshare.com или прямую ссылку формата .mp3 ", "http://");
if (!enterURL)
{FoundErrors += " " + error_no_url;}
if (FoundErrors)
{alert("Ошибка!" + FoundErrors);
return;}
insert("[audio]" + enterURL + "[/audio]");}
</script>


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

Отредактировано Deff (Вт, 27 Мар 2012 11:14:23)

0

2

Данный Вопрос именно Важен для корректировки кода в Спойлере от сервиса,

Трабл сегодняшний/вчерашний => Обновленный спойлер пост 308

0

3

Еще => Скрипты от пользователей пост 664

Отредактировано Deff (Вт, 27 Мар 2012 11:15:47)

0


Вы здесь » Единый форум поддержки » Корзина » !Некоректно использовать $(this) в onclick (да и любых событиях тегов