Как динамически включить / отключить ссылки с помощью jQuery? - PullRequest
39 голосов
/ 24 сентября 2010

У меня есть несколько ссылок, отображаемых на странице.Я хотел бы включить / отключить их на основе других событий на странице.Есть ли способ сделать это с помощью jQuery?

Ответы [ 6 ]

58 голосов
/ 24 сентября 2010
$('selector_for_links_to_disable').bind('click', function(e){
        e.preventDefault();
})

и для включения:

$('selector_for_links_to_enable').unbind('click')
4 голосов
/ 24 сентября 2010

Вы можете сделать что-то вроде:

$('.links').click(function(e){
  if( [some conditions] ){
    e.preventDefault();
  }
});

Обязательно покажите, что они больше не работают, иначе ваши пользователи будут сбиты с толку, смеется.

2 голосов
/ 24 сентября 2010

Вы можете сделать что-то вроде этого:

<script>
    $(document).ready(function() {
        $('input#disableall').live('click', function(){
            $('a').attr( 'class', 'disabled' );
            alert('All links are disabled.');
        });


        $('input#enableall').live('click', function(){
            $('a').attr( 'class', 'enabled' );
            alert('All links are enabled.');
        });

        $('a.disabled').live('click', function(event){
            event.preventDefault();
        });
    });
</script>

<a href='http://www.google.com'>Google<a/>
<a href='http://www.yahoo.com'>Yahoo<a/>
<a href='http://www.hotmail.com'>Hotmail<a/>

<input type='button' id='disableall' value='Disable Links' />
<input type='button' id='enableall'  value='Enable Links' />
2 голосов
/ 24 сентября 2010

это зависит от того, что вы подразумеваете под "отключить".

это заставит их ничего не делать:

$("A").click(function() { return false; });
1 голос
/ 24 сентября 2010
$(document).delegate('.links', 'click', function () {
  if ([your condition is true]) {
    return false;
  }
})

делегирование лучше, чем обработчики, потому что вы можете вызвать их до загрузки dom

0 голосов
/ 17 апреля 2013

Когда я даю функции кнопкам с помощью jquery, мне нравится делать это:

indice = '';

$('myLink').live('click',function() {
    if (indice !== 'value1'){

        // your code
    }

    indice = 'value1';
    return indice;

});

с этим вы получаете функцию только при первом нажатии кнопки de. Теперь вам просто нужно установить indice, отличный от value1, чтобы ваша ссылка снова работала

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