Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление и добавление события к элементу. jQuery 
:(
    Опции темы
iddqd
Дата 20.5.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



У меня есть такой код:
Код

<a href="#" onclick="showpage(this)">text</a>

Необходимо в функции showpage() удалить onclick из этого элемента или наоборот, добавить обратно.
Как это можно реализовать в jQuery? bind и unbind? Если да, то покажите на примере, пожалуйста.
Если я внутри showpage делаю $(...).bind('click', "showpage(this)");, то валятся ошибки, а если передаю не строкой, то жалуется на бесконечную рекурсию.


--------------------
PM MAIL   Вверх
iddqd
Дата 20.5.2008, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



Сделал в итоге вот так, но все же очень интересна реализация через bind и unbind.
Код

        $('#menu span a').attr('onclick', 'loadpage(this)');
        $(obj).removeAttr('onclick');



--------------------
PM MAIL   Вверх
solenko
Дата 20.5.2008, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



Код

$(document).ready(function(){
  $('#mylink').click(showpage);
});

function showpage(event) {
  $(this).unbind('click', showpage);
}

<a href="#" id="mylink">text</a>



--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
iddqd
Дата 21.5.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



Вся проблема в том, что функция выглядит именно так, как на скрине. И забиндить мне надо именно ту функцию, в которой я это делаю.
Сделал код вот так:
Код

        $('#menu span a').click(loadpage(this));
        $('#menu span a').unbind('click', loadpage(this));

И тебе фаербаг ругается на то, что бесконечная рекурсия.


--------------------
PM MAIL   Вверх
ksnk
Дата 22.5.2008, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



$('#menu span a').unbind('click') заанбиндит все клики вообще - не подойдет?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
iddqd
Дата 22.5.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



ksnk, с анбиндом нет проблем, а с биндом?


--------------------
PM MAIL   Вверх
solenko
Дата 22.5.2008, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



Код

$('#menu span a').bind('click', loadpage);

Именно функция а не результат ее выполнения, как это написано у вас, нужно передавать в bind


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
iddqd
Дата 22.5.2008, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



Но мне нужно, чтоб она вызывалась именно loadpage(this)


--------------------
PM MAIL   Вверх
krundetz
Дата 23.5.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 2
Всего: 69



Цитата(iddqd @ 22.5.2008,  23:21)
Но мне нужно, чтоб она вызывалась именно loadpage(this)

Насколько я знаю в jQuery в функцию обработчик автоматически передается ссылка на элемент её вызвавший обратится к которому внутри функции можно по this. Тоесть вот этот код:
Код

$('#menu span a').not($(this)).bind('click',loadpage);
$(this).unbind('click',loadpage);

будет автоматически передавать внутрь метода метода loadpage ссылку на элемент при клике на который он вызовется.

Это сообщение отредактировал(а) krundetz - 23.5.2008, 15:02


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
solenko
Дата 23.5.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



Ну а если нужен другой this, то я тут недавно извращался и ksnk еще оно решение дал


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0530 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.