Отключить (и снова включить) href и onclick на элементах - PullRequest
5 голосов
/ 07 января 2011

Я просто хочу включить / отключить onclick и href для элементов (a или div).

Я не знаю, как это сделать.

Я могу отключить onclick, добавив обработчик события click, но ссылка все еще доступна.

 
$(this).unbind().click(function(event){
     event.preventDefault();
     return;
});

Редактировать НАЙТИ ХАК ДЛЯ ЭЛЕМЕНТОВ


if ($(this).attr("href")) {
     $(this).attr("x-href", $(this).attr("href"));
     $(this).removeAttr("href");
}

Ответы [ 5 ]

6 голосов
/ 07 января 2011

Если вы возвращаете false в событии onclick, href игнорируется.

  1. Это пойдет к Гулу: <a href="http://www.google.com" onclick="alert('Go to Google')">Test</a>

  2. Это не пойдет в Google: <a href="http://www.google.com" onclick="alert('Go to Google'); return false;">Test</a>

5 голосов
/ 07 января 2011

Хорошо, я нашел обходной путь: поместил наложение поверх основного элемента div, содержащего все элементы, которые я хотел отключить. Это просто работает.

2 голосов
/ 07 января 2011

Вы можете попробовать следующее:

$('a, div').click(
    function(e){
    return false;
        // cancels default action *and* stops propagation

    // or e.preventDefault;
       // cancels default action without stopping propagation
});

Документация MDC для preventDefault, jДокументация для event.preventDefault.

ТАК вопрос: JavaScript event.preventDefault против return false.

Я не уверен относительно проблемы "href, все еще доступной", так как событие click отменено; однако, если вы хотите удалить элементы href из a:

$('a[href]').attr('href','#');

удалит их (или, скорее, заменит URL на #).

<ч />

Отредактировано в ответ на комментарий (к вопросу) от OP:

Хорошо, извините;) Я просто хочу иметь возможность (нажав на кнопку), чтобы отключить / включить все ссылки (щелкнуть или вспомнить) над элементами (div или a)

$('#buttonRemoveClickId, .buttonClassName').click(
function() {
    $('a, div').unbind('click');
});
$('#buttonReplaceClickId, .buttonOtherClassName').click(
function() {
    $('a, div').bind('click');
});
1 голос
/ 07 января 2011

Попробуйте отключить клик:

$ (this) .unbind ('click');

0 голосов
/ 07 января 2011

Вы можете установить атрибут href непосредственно на "", чтобы предотвратить отображение оригинала в строке состояния, если это то, что вы просите.

$(this).unbind().click(function(event){
     event.preventDefault();
}).attr("href", "");

В противном случае event.preventDefault() уже не дает ссылкам нажимать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...