Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Задать строкой ф-ию onclick ссылки, jQuery (https://javascript.ru/forum/events/7161-zadat-strokojj-f-iyu-onclick-ssylki-jquery.html)

Jumangee 18.01.2010 15:24

Задать строкой ф-ию 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'...) но нужно эффекта не добился

Подскажите - в чём косяк?

Gozar 18.01.2010 16:40

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

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

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

e1f 18.01.2010 16:52

Что, так не работает уже?
$('.unclickable').click(function(){return false;});

Jumangee 18.01.2010 17:15

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

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

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

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

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

Gozar,
ничего особенно хитроумного нету - ссылка после разового применения становится неактивной

e1f 18.01.2010 17:24

Тогда
$(elem).unbind('click').click(function() {return false;});

Jumangee 18.01.2010 17:32

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


Часовой пояс GMT +3, время: 13:32.