Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.01.2010, 14:24
Аватар для Jumangee
Новичок на форуме
Отправить личное сообщение для Jumangee Посмотреть профиль Найти все сообщения от Jumangee
 
Регистрация: 18.01.2010
Сообщений: 3

Задать строкой ф-ию onclick ссылки, jQuery
Есть ссылка:

<a href="ya.ru" id="rrr" onclick="return make_unclickable(this);">тест</a>


код make_unclickable:
function make_unclickable(elem)
{
// не работает
	$(elem).attr('click', 'return false;');

// не работает в IE
	var t = elem.attributes.getNamedItem('onclick');
	if (t)
	{
		t.nodeValue = 'return false;';
	}

	$(elem).attr('onclick', 'return false;');
	$(elem).attr('href', '#');
	return false;
}


Больше всего удивляет, что не работает через .attr!

Пробовал делать .unbind('click') и .bind('click'...) но нужно эффекта не добился

Подскажите - в чём косяк?
Ответить с цитированием
  #2 (permalink)  
Старый 18.01.2010, 15:40
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

<a href="ya.ru" id="rrr" onclick="make_unclickable(this);">тест</a>

а так пробовали?

Ой забыл поинтересоваться, а что делает такая хитроумная функция и зачем она такая хитроумная?

Последний раз редактировалось Gozar, 18.01.2010 в 15:42.
Ответить с цитированием
  #3 (permalink)  
Старый 18.01.2010, 15:52
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Что, так не работает уже?
$('.unclickable').click(function(){return false;});
Ответить с цитированием
  #4 (permalink)  
Старый 18.01.2010, 16:15
Аватар для Jumangee
Новичок на форуме
Отправить личное сообщение для Jumangee Посмотреть профиль Найти все сообщения от Jumangee
 
Регистрация: 18.01.2010
Сообщений: 3

Gozar,
необходимо, чтобы если в onclick чтото было, его тоже больше не стало, а вообще href нормельно меняется, и в FF вобще пример работает как нужно

$(elem).click(function() {return false;});

Так работает, но click биндит новую ф-ию как listener в очереди, поэтому старый код продолжает вызываться

Вариант
elem.onclick = function() {return false;};

Работает как нужно и в IE и в FF, но както смущает меня такой вариант

Gozar,
ничего особенно хитроумного нету - ссылка после разового применения становится неактивной
Ответить с цитированием
  #5 (permalink)  
Старый 18.01.2010, 16:24
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Тогда
$(elem).unbind('click').click(function() {return false;});
Ответить с цитированием
  #6 (permalink)  
Старый 18.01.2010, 16:32
Аватар для Jumangee
Новичок на форуме
Отправить личное сообщение для Jumangee Посмотреть профиль Найти все сообщения от Jumangee
 
Регистрация: 18.01.2010
Сообщений: 3

e1f,
Да, спасибо, так работает правильно
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(DOM) JQuery получение текста ссылки Mila Общие вопросы Javascript 5 25.04.2012 12:36