2011-01-31 1 views
6

Цель состоит в том, чтобы отключить все ссылки при щелчке, а затем отключить все ссылки до тех пор, пока сервер не отправит неисключимую команду (используя аналогичный метод, который будет использоваться для отключения).jQuery: как отключить все внутри div? но все еще держать все видимым?

Итак, поскольку все ссылки в одном содержат div, я полагаю, что могу просто временно отключить это.

Как бы я это сделал?

ответ

3

Если вы просто хотите, чтобы отключить поведение по ссылке по умолчанию, вы можете использовать комбинацию delegate и event.preventDefault:

$('#container').delegate('a', 'click', function(e) { 
    if (linksDisabled) { 
     e.preventDefault(); 
    } 
}); 

Вы можете установить linksDisabled (в родительской области) к true или false в вашем другом обработчики событий.

Если эти ссылки занимаются Javascripty, это немного сложнее. Вероятно, проще всего поставить if (linksDisabled) в каждом обработчике событий.

+0

Есть ли преимущество использования 'preventDefault()' вместо 'вернуться ложным;'? –

+2

@ Lèse majesté Позволяет продолжить распространение. Я лично считаю его более интуитивным. Более того, его можно вызывать в любой точке обработчика события, а не только в конце. Здесь это не актуально, но мне нравится, чтобы мой код был последовательным. – lonesomeday

+0

Это хороший момент. Я не думал об этом. –

2

Попробуйте это:

$("#YOUR_DIV a").click(function(){ 
return false; 
}) 
+0

Если на элементах есть другие обработчики событий, это может хорошо выполняться после других и, следовательно, не имеет никакого эффекта. – lonesomeday

+0

Это может быть хорошим способом отключения ссылок на JavaScript. Тем не менее, вам нужен способ убедиться, что этот обработчик событий выстрелил первым. –

Смежные вопросы