Отменить щелчок (function () {return false;}) - PullRequest
0 голосов
/ 20 января 2012

У меня есть вопрос / проблема.В какой-то момент мне нужно, чтобы каждый элемент не был кликабельным, кроме одного div, и у меня есть:

$('#MainDiv *:not(#Div)').click(function() {return false;});

В MainDiv у меня есть несколько других элементов (a, img, ...), и мне нужны эти элементыПовторите, чтобы быть кликабельным.Можно отменить эту функцию или мне нужно снова установить каждый a.href и img.click этих элементов?

Ответы [ 3 ]

0 голосов
/ 31 января 2012

Это работа для делегирования события. #MainDiv, вероятно, имеет десятки или сотни элементов? Просто прикрепите туда обработчик события одного клика, пусть пузырь событий к #MainDiv и посмотрите, является ли вещь, по которой щелкнули, # Div.

$("#MainDiv").click(function(event){
    if ( event.target.id === "Div" ) {
      // do the thing with Div
    }
    else {
      return false;
    }
});
0 голосов
/ 29 сентября 2012

Вы можете попробовать это:

$('#MainDiv *:not(#Div)').bind('click', false);

$('#MainDiv *:not(#Div)').unbind('click', false);

$('#MainDiv *:not(#Div)').bind('click', false); должно быть эквивалентно $('#MainDiv *:not(#Div)').click(function() { return false; });

0 голосов
/ 21 января 2012

Попробуйте использовать $('#MainDiv *:not(#Div)').unbind("click"); Затем, когда вам нужно переназначить функции щелчка, просто убедитесь, что каждый щелчок заключен в функцию включения, чтобы вы могли просто сделать что-то вроде $(".someEle").click(function(e){ yourCustomeFuncForThisItem(var1, var2); });

...